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",
当然基于上述问题的求解的启发,我们可以从后面来开始处理字符串,若最后一个字符不为空格,就统计,若为空格,就向前寻找到不为空格的字符然后再统计,实现代码如下:
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) {
int index = 0, count = 0;
int length = s.size();
for (int i = 0; i<length; i++){
if (s[i] == ' ') index = i;
}
for (int i = index + 1; i<length; i++){
count++;
}
if (index == 0 && length != 0){
if (s[index] == ' ') return length - 1;
return length;
}
if (index == length - 1){
while (s[index - 1] == ' ') index--;
for (int i = index - 1; i >= 0; i--){
if (s[i] == ' ') return count;
count++;
}
}
return count;
}
};
当然基于上述问题的求解的启发,我们可以从后面来开始处理字符串,若最后一个字符不为空格,就统计,若为空格,就向前寻找到不为空格的字符然后再统计,实现代码如下:
class Solution {
public:
int lengthOfLastWord(string s) {
int length = s.size();
int index = length;
int count = 0;
if (s[index - 1] == ' '){
while (s[index - 1] == ' '&&index>1) index--;
for (int i = index - 1; i >= 0; i--){
if (s[i] == ' ') return count;
count++;
}
}
else{
for (int i = length - 1; i >= 0; i--){
if (s[i] == ' ') return count;
count++;
}
}
return count;
}
};