58、最后一个单词的长度
题目描述今天这个题我一开始的想法是:设立一个计数器count=0,从第一个单词开始统计,每前进一个字符,count ++。当遇到空格的时候,count
今天这个题我一开始的想法是:设立一个计数器count=0,从第一个单词开始统计,每前进一个字符,count ++。当遇到空格的时候,count清0,遍历完一遍以后,正好可以求出最后一个单词的长度。同时,也考虑了边界条件:s.length()==0和s[0]==' '返回0的情况,但是一直是解答错误。
后来看了题解,我才恍然大悟,原来,这个字符串末尾也可以跟上有限个空格啊,比如“a ab abc abcd ”(后面跟了5个空格),这样我们就从后面来往前走,先把最末尾的空格全部删掉,这就用到了erase()函数,删掉之后呢,此时指向最末尾的非空格字符,再用函数:find_last_of(' ')。来找出最末尾的空格来。这样,最后一个单词的首尾边界都有了,再相减即可得到它的长度。
我们看代码:
class Solution {npublic:n int lengthOfLastWord(string s) {n if(s.empty())n return 0;n int pos = s.length() - 1;n while(pos >= 0 && s[pos] == ' '){n s.erase(pos);n pos--;n }n int last_begin = s.find_last_of(' ');n return s.length() - last_begin -1;n n }n};
字符串的存储方式;