【Length of Last Word】cpp

题目:

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.

For example, 
Given s = "Hello World",
return 5.

代码:

class Solution {
public:
    int lengthOfLastWord(string s) {
            for ( int i = s.length()-1; i >=0; --i ) 
            {
                if (s[i]==' ')
                {
                    s.erase(s.end()-1);
                }
                else
                {
                    break;
                }
            }
            const size_t len = s.length();
            int ret = 0;
            for ( size_t i = 0; i < len; ++i )
            {
                if (s[i]!=' ')
                {
                    ++ret;
                    continue;
                }
                if (s[i]==' ')
                {
                    ret = 0;
                    continue;
                }
            }
            return ret;
    }
};

tips:

先把后面的空格都去掉。然后从头遍历,最后留下的ret就是最后一个单词的长度。

还有STL的一个做法,明天再看。

==========================================

第二次过这道题,感觉不知道第一次为啥还用erease这种了,直接一个指针从后往前遍历就AC了。

class Solution {
public:
    int lengthOfLastWord(string s) {
            int i = s.size()-1;
            while ( i>=0 ){
                if ( s[i]==' ' )
                {
                    --i;
                }
                else
                {
                    break;
                }
            }
            int ret = 0;
            while ( i>=0 )
            {
                if (s[i]!=' ')
                {
                    ++ret;
                    --i;
                }
                else
                {
                    break;
                }
            }
            return ret;
    }
};

 

posted on 2015-05-11 23:07  承续缘  阅读(246)  评论(0)    收藏  举报

导航