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};
字符串的存儲方式;
上一篇:假設573-582
下一篇:11123587..








