[LeetCode] Length of Last Word

Length of Last Word

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.

解题思路:

注意“a ”这种情况仍然返回1,而不是0。另外,const char* 不能直接赋值给char*变量,需要强制转换,而反过来是可以的。

代码如下:

class Solution {
public:
    int lengthOfLastWord(const char *s) {
        int length=0;
        char* c=(char*)s;
        while(*c!='\0'){
            if(*c!=' '){
                length++;
            }else if(*c==' '&&*(c+1)!=' '&&*(c+1)!='\0'){
                length=0;
            }
            c=c+1;
        }
        return length;
    }
};

二次刷题(2015-07-31)

之前做的是从前往后扫,其实可以直接从后往前扫。先去除后边的空格,然后在开始计数。

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


0 条评论

    发表评论

    电子邮件地址不会被公开。 必填项已用 * 标注