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;
}
};