LeetCode: 58. Length of Last Word

051101

题目

Given a string s consists of upper/lower-case alphabets and empty space characters ’ ', return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

Example:

Input: "Hello World"
Output: 5

我的解题思路

题意:这道题比较简单,就是返回一个字符串中的最后一个单词长度,在有单词的情况下,即使最后的字符为空,也仍然要返回最后一个单词的长度。

思路:先判断字符串的长度,如果为0则直接返回0;否则依次计算每个单词的长度,返回最后一个的。

class Solution {
public:
    int lengthOfLastWord(string s) {
        if(s.length()==0) return 0;
        
        int m=0;
        int last_one=0;
        for(int i=0; i<s.length(); i++){
            if(s[i]==' ') {
                if(m!=0)  last_one = m;
                m=0;
            }
            else {
                m=m+1;
                if(i==s.length()-1) last_one = m;
            }
        }
        return last_one;
    }
};

刚刚在写解题思路的时候,突然想到既然是返回最后一个单词的长度,那我反过来遍历会更快鸭!反过来需要注意对最后字符为‘ ’的处理就好!

class Solution {
public:
    int lengthOfLastWord(string s) {
        if(s.length()==0) return 0;
        int m=0;
        for(int i=s.length()-1; i>=0; i--){
            if(s[i]==' '){
                if(m!=0) return m;
                else continue;
            } 
            else m+=1;    
        }
        return m;
    }
};

刚刚去看了大佬的解法,虽然开销上可能差不多,但是大佬的代码看起来很舒服!

class Solution {
public:
    int lengthOfLastWord(string s) { 
        int len = 0, tail = s.length() - 1;
        while (tail >= 0 && s[tail] == ' ') tail--;
        while (tail >= 0 && s[tail] != ' ') {
            len++;
            tail--;
        }
        return len;
    }
};

猜你喜欢

转载自blog.csdn.net/liveway6/article/details/90105871