问题描述:
给定一个字符串, 包含大小写字母、空格' '
,请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0
。
样例:给定 s = "Hello World"
,返回 5
。
注意:一个单词的界定是,由字母组成,但不包含任何的空格。
算法思想:
因为要检测最后一个单词,因此,要从字符串的最后往前检索。刚开始的没有考虑到该字符串的最后几个字符可能是空格的情况。如果是检测第一个单词的长度,就从前往后检索,并且要排除开始是空格的字符。
public static int lengthOfLastWord(String s) {
//记录检索单词的终止位置
int posEnd=s.length()-1;
//记录检索单词的起始位置
int posBeg=0;
//保存最后一个单词的长度
int size=0;
//如果该字符串是空字符,或者长度为0,就应该返回0
if(s==null||s.length()==0){
return 0;
}
//放着该字符串的最后是空格,因此要检索出第一个不为空格的字符
while(posEnd>=0&&(s.charAt(posEnd)==' ')){
posEnd--;
}
//这是该字符串都是空格的情况
if(posEnd<0){
return 0;
}
posBeg=posEnd;
//检索到字符串的起点
while(posBeg>=0&&(s.charAt(posBeg)!=' ')){
posBeg--;
}
//表明该字符串从末位字符开始到第一个字符都是属于一个单词
if(posBeg<0){
return posEnd+1;
}
//遍历完以后,posBeg保存的是最后一个单词左边的空格位置
size=posEnd-posBeg;
return size;
}