LeetCode58 最後一個單詞的長度
阿新 • • 發佈:2018-12-15
題目
給定一個僅包含大小寫字母和空格 ’ ’ 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串。
示例
輸入: “Hello World” 輸出: 5
C++程式碼
採用了rfind()函式,從後向前查詢’ '並返回其位置。 注意幾個特殊情況:("_“表示” ")
- 形如"_"和“___________”
- 形如“aaaa_”和“aaaa________ ”
- 形如“aaaa”和“ aaaa__________” 重點都在於當字串末尾存在一個或多個’ '時,如何求最後一個單詞的長度 此外還要注意字串的長度和下標之間的關係。
class Solution { public: int lengthOfLastWord(string s) { size_t pos=s.rfind(" "); if(pos==string::npos) return s.length(); //若沒找到空格 else if(pos==s.length()-1) //若最後一位是空格 { for(int i=1;i<s.length();i++) { size_t temp=s.rfind(" ",s.length()-1-i); //從後往前第i位開始查詢' ' if(temp==string::npos) return s.length()-i; if(temp!=pos-i) //當兩個' '不相鄰,說明它們之間一定有一個單詞,則位置之差即為單詞長度 { return pos-i-temp; } } return 0; //若全為' ',則返回0 } else return s.length()-1-pos; //存在空格且最後一位不為' ',說明最後一個空格之後有一個單詞 } };