【题目】
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
.
【题意】
字符串最后一个单词的长度是多少
【分析】
考虑特殊情况三种情况:
1.整个字符串为空时
2.字符串由无数的空格组成时
3.字符串最后以空格结尾时
【实现】
从后往前看字符串,跳过所有空格后,记下该结束位置,再到下一个空格,再记录一个开始位置,则长度就是结束位置减去开始位置。在跳过空格的循环后,要判断是否已经超界,如果超界则返回0
int lengthOfLastWord(const char *s) {
int len = strlen(s);
int i = len - 1;
int lastLen = 0;
// 去掉空格
while(s[i] == ' '){
--i;
}//while
while(i >= 0 && s[i] != ' '){
++lastLen;
--i;
}//while
return lastLen;
}
从前往后:
class Solution {
public:
int lengthOfLastWord(const char *s) {
if( *s == '\0') return 0;
int len = *s == ' ' ? 0 : 1;
while( (*++s) != '\0' ) {
if( *s != ' ') {
if( *(s-1) != ' ') {
len++;
} else {
len = 1;
}
}
}
return len;
}
};
java的api
public int lengthOfLastWord(String s) {
if (s != null && !s.trim().equals("")) {
String[] arr = s.trim().split(" ");
int length = arr[arr.length - 1].length();
return length;
}
return 0;
}