LintCode笔记 - 145.大小写转换 - 极简之道 - 最短代码

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

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

 

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

一步步走到

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%
 
posted @ 2019-07-17 21:21  朝九晚六进ICU  阅读(238)  评论(0)    收藏  举报