原题链接 : 最后一个单词的长度
各位开工大吉 恭喜发财~ 继续我的LeetCode之旅, 今日的题目比较简单, 最后一个单词的长度, 给定的字符串只有空格和字母, 而且length最小为1. 题目要求求最后的单词, 所以从后往前找是最快的. 因为比较简单, 就不啰嗦啦 直接上代码 :
参考代码 1
int tag = s.length() - 1;
// 先把后面的空格全部排除掉,找到最后不为空格的下标
while (s.charAt(tag) == ' ') {
tag--;
}
int res = 0;
// 当不为空下标大于等于0 , 且指向的不为空格时候, 进行处理
while (tag >= 0 && s.charAt(tag) != ' ') {
res++;
tag--;
}
return res;
参考代码2 :
// 如果只有1个且不为空, 直接返回1即可
if (str.length() == 1 && str.charAt(0) != ' ') return 1 ;
int res = 0 , tag = 0;
// 从后往前找
for (int i = str.length() - 1 ; i >= 0 ; i--){
// 当前指向不为空格, 但下一个为空格的时候, 结束比较,返回 ++res
if (i-1 > 0 && str.charAt(i) != ' ' && str.charAt(i - 1) == ' ' ){
return ++res ;
}
// 当前不为空则+1
if (str.charAt(i) != ' '){
res += 1 ;
}
// 如果当前为空, ++tag , 如果最后tag和length一样, 则都是空格, 返回0
if (str.charAt(i) == ' '){
++ tag ;
if (tag == str.length() ) return 0;
}
}
return res;