1. 程式人生 > >LeetCode58 最後一個單詞的長度

LeetCode58 最後一個單詞的長度

題目

給定一個僅包含大小寫字母和空格 ’ ’ 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串。

示例

輸入: “Hello World” 輸出: 5

C++程式碼

採用了rfind()函式,從後向前查詢’ '並返回其位置。 注意幾個特殊情況:("_“表示” ")

  1. 形如"_"和“___________”
  2. 形如“aaaa_”和“aaaa________ ”
  3. 形如“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; //存在空格且最後一位不為' ',說明最後一個空格之後有一個單詞
    }
};