这道题目一眼就能看出是送分题,当然在这里也不谈高难度的实现逻辑,肯定有同学会想直接用自带函数实现不就可以了吗?

对的,就是这么简单,然而今天的重点是如何把代码简写到最短。

本文章将带你把代码长度从

一步步走到

Let's get started

首先要说明的是LintCode的代码长度是按照每一个位来计算的,因此代码中所有的空格,备注,换行等都会占用长度

首先初始化代码窗口是这样的

/**
* @param character: a character
* @return: a character
*/
const lowercaseToUppercase = function (character) {
// write your code here
}

总长度为:184/100%/0%

我们先去掉无意义的注释并写入代码

return character.toUpperCase();//String对象的toUpperCase将字母由小变大

然后就变成这样

const lowercaseToUppercase = function (character) {
return character.toUpperCase();
}总长度为:89/47.08%/52.92%

总长度为:89/47.08%/52.92%

咱再挤挤就变成这样

const lowercaseToUppercase=function(character){return character.toUpperCase()}

总长度为:78/41.26%/12.37%

里面的"character"是不是也无关紧要呢?咱再压一下  

const lowercaseToUppercase=function(a){return a.toUpperCase()}

总长度为:62/32.8%/20.51%

终于到了62,但是好像已经没办法再压缩了吧!

小伙伴可以先思考一下

.

.

.

其实还是可以继续压缩的,这里就教大家一个知识点:箭头函数

什么是箭头函数呢?引用廖雪峰老师文章对箭头函数的定义:

ES6标准新增了一种新的函数:Arrow Function(箭头函数)。
为什么叫Arrow Function?因为它的定义用的就是一个箭头  

介绍有点简单,但是它却帮了大忙,它的实现是这样的

x => x * x

注意:完全等价于

function(x){return x*x}

这个代码跟题目是不是十分相似

然后咱们再套入到公式就可以发现

const lowercaseToUppercase=a=>a.toUpperCase();

总长度为:46/24.33%/25.83%

代码被再一次同等压缩率的压缩了,是不是满满的成就感呢?

剩下的1长度交给你们了:

//如果觉得讲的还行,感谢推荐+关注+在下方评论哦
//还有别跑去和我抢位置啦[捂脸笑]
//博主不定期更新一些文章

总长度为:45/23.8%/2.18%
 

LintCode笔记 - 145.大小写转换 - 极简之道 - 最短代码的更多相关文章

  1. 我的第一个 Rails 站点:极简优雅的笔记工具-Raysnote

    出于公司开发需求,这个暑假我開始搞Ruby on Rails.在业余时间捣鼓了一个在线笔记应用:http://raysnote.com.这是一个极简而优雅的笔记站点(至少我个人这么觉得的). 笔记支持 ...

  2. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  3. 《统计学习方法》极简笔记P5:决策树公式推导

    <统计学习方法>极简笔记P2:感知机数学推导 <统计学习方法>极简笔记P3:k-NN数学推导 <统计学习方法>极简笔记P4:朴素贝叶斯公式推导

  4. 《统计学习方法》极简笔记P4:朴素贝叶斯公式推导

    <统计学习方法>极简笔记P4:朴素贝叶斯公式推导 朴素贝叶斯基本方法 通过训练数据集 T={(x_1,y_1),(x_2,y_2),(x_N,y_N)...,(x_1,y_1)} 学习联合 ...

  5. Git 极简入门教程学习笔记

    Git 极简入门教程  http://rogerdudler.github.io/git-guide/index.zh.html 测试用 https://github.com/xxx/BrnShop. ...

  6. Mongodb极简实践

    MongoDB 极简实践入门 1. 为什么用MongoDB? 传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式 ...

  7. MongoDB 极简实践入门

    原作者StevenSLXie; 原链接(https://github.com/StevenSLXie/Tutorials-for-Web-Developers/blob/master/MongoDB% ...

  8. Python 极简教程(八)字符串 str

    由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...

  9. ServiceFabric极简文档-0. ServiceFabric简介

    前言: 最近ServiceFabric开源了,大家热情都比较高,官方文档大而全,但快速入手不容易找到头绪.发几篇极简的文档,跟大家分享一下,顺便为Ray的ServiceFabric部署做一下铺垫.因为 ...

随机推荐

  1. MATLAB实例:聚类网络连接图

    MATLAB实例:聚类网络连接图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值( ...

  2. 曹工说JDK源码(4)--抄了一小段ConcurrentHashMap的代码,我解决了部分场景下的Redis缓存雪崩问题

    曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位? 曹工说JDK源码(2)--ConcurrentHashMap的多线 ...

  3. akka-typed(7) - cluster:sharding, 集群分片

    在使用akka-typed的过程中发现有很多地方都简化了不少,变得更方便了,包括:Supervision,只要用Behaviors.supervise()把Behavior包住,很容易就可以实现这个a ...

  4. 使用 Kafka + Spark Streaming + Cassandra 构建数据实时处理引擎

    Apache Kafka 是一个可扩展,高性能,低延迟的平台,允许我们像消息系统一样读取和写入数据.我们可以很容易地在 Java 中使用 Kafka. Spark Streaming 是 Apache ...

  5. 记一次mysql小版本升级

    最近护网操作比较紧,基线和漏洞检查比较频繁,新扫描出来的mysql漏洞需要修复,没有啥好的修复方法,只剩下升级版本这一条路,生产环境是5.7.12,二进制文件直接解压使用的,看了一下现在最新的版本,5 ...

  6. hello python week one

    python的注释 好的pytho程序员不一定非要追求 代码的简短,代码的可读性也是至关重要的 与用户交互 输入 input 会将输入内容转化为字符串 输出 print 格式化输出 %d %s 占位符 ...

  7. Python实用笔记 (9)高级特性——列表生成式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...

  8. 恕我直言你可能真的不会java第8篇-函数式接口

    一.函数式接口是什么? 所谓的函数式接口,实际上就是接口里面只能有一个抽象方法的接口.我们上一节用到的Comparator接口就是一个典型的函数式接口,它只有一个抽象方法compare. 只有一个抽象 ...

  9. Redis系列(六):数据结构QuickList(快速列表)源码解析

    1.介绍 Redis在3.2版本之前List的底层编码是ZipList和LinkedList实现的 在3.2版本之后,重新引入了QuickList的数据结构,列表的底层都是QuickList实现 当L ...

  10. VSCode 使用 Settings Sync 同步配置和插件

    简要说明: Settings Sync插件可以在不同的计算机同步VSCode配置和插件. 安装和配置 在VSCode的插件栏搜索settings sync并安装.在安装完成之后如果需要重新载入就点击重 ...