最近感觉自己代码到处都是逻辑漏洞,为了可持续发展(为了钱途,记录一些算法学习与对比实现
//我的笨办法
var lengthOfLastWord = function (s){
let i=0;
for(let index=s.length-1;index>=0;index--){
if(s[index] != ' '){//不等于空
i++;
if(s[index-1]==' '||s[index-1]=='undefined'){
break;
}
}
}
return i;
}
//实例办法
var lengthOfLastWord = function(s) {
let index = s.length - 1;
while (s[index] === ' ') { //过滤字符串尾部空值
index--;
}
let wordLength = 0;
//不是空串且当前数有值,为true时一直执行
while (index >= 0 && s[index] !== ' ') {
wordLength++;//字符长度加一
index--;
}
return wordLength;
};
之前没想过用while循环,
GPT大爹的评价:
这两个函数的目的都是求一个字符串中最后一个单词的长度。它们的实现思路不同,第一个函数是从字符串末尾往前遍历,直到找到第一个非空格的字符,然后继续往前遍历计算最后一个单词的长度。第二个函数是从字符串末尾往前遍历,跳过末尾的空格字符,找到最后一个单词的结束位置,然后计算它的长度。
两个函数的时间复杂度都是O(n),但是第一个函数的实现比较繁琐,需要使用多个判断条件,而第二个函数使用了while循环,并且只使用了两个变量,实现比较简洁清晰。因此,第二个函数的实现优于第一个函数。