给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明: 一个单词是指由字母组成,但不包含任何空格的字符串。
举例:
输入: "my name is Kristin"
输出: 7
这个题一开始误解了题目的意思,以为最后一个字符是空格的话也要返回0。其实是不论任何情况都返回最后一个单词的长度。这样的话就比较好想了,设定一个计数器,然后遍历整个字符串,在遇到非空格的时候自加1,遇到空格时清零,这样就一直保存了空格前一个字符串的长度,但是遇到空格时要注意两点,如果这个空格是最后一个空格时不可以清零,如果有连续的空格,也就是下一个字符还是空格时,也不清零,直接跳过直到最后一个空格才清零。最后直接返回计数值
js代码分析
var inputStr = "my name is Kristin"; var show =[]; var count =0 inputStr = inputStr.trim() // var checkStr = inputStr.replace(/s/g,''); for(let i=inputStr.length;i--;){ count++; show.unshift(inputStr[i]) if(inputStr[i] ==' '){ document.getElementById("wordSize").value=count-1//最后一个单词的长度 document.getElementById("wordShow").value=show.join("")//最后一个单词的内容 break; } }
问题衍生:这个字符串最长的单词,最短的单词,单词只出现一次的字母,出现次数最多的字母等等;
git上详细页面展示: https://github.com/Kristen-D/Algorithms/tree/master/leetCode