Question
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
.
本题难度Easy。
【复杂度】
时间 O(N) 空间 O(1)
【思路】
只要碰到单词就记录其start
与end
即可。分别对以下几种情况进行讨论:
一、判断start
1、单词顶格,例如"world"
,当遍历到w
时要判断i==0
2、单词不顶格,例如" world"
或"hello world"
中的world
,当遍历到w
时要判断前一个字符是否为空格。
二、判断end
1、单词顶格,例如"world"
,当遍历到d
时要判断i==size-1
2、单词不顶格,例如"world "
,当遍历到空格(第5个)时要判断前一个字符是否不为空格
【代码】
public class Solution {
public int lengthOfLastWord(String s) {
//require
if(s==null)
return 0;
int size=s.length();
if(size<1)
return 0;
//invariant
int start=-1,end=-1;
for(int i=0;i<size;i++){
char c=s.charAt(i);
if(c!=' '){
if(i==0)
start=i;
else if(s.charAt(i-1)==' ')
start=i;
if(i==size-1)
end=i;
}else{
if(i!=0&&s.charAt(i-1)!=' ')
end=i-1;
}
}
//ensure
return (end==-1)?0:end-start+1;
}
}