LeetCode58. 最后一个单词的长度
题目描述
/**
*
* 给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。
* 如果不存在最后一个单词,请返回 0 。
*
* 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
*
*/
思路分析
- 给定一个字符串,寻找最后一个子串,返回其长度,题目比较简单,注意考虑在字符串末尾有空格的情况
- 如果有空格,则需要先去除空格,然后再定义一个变量记录最后一个字符串的初始索引
- 返回字符串的长度即可
- 源码及分析见下
源码及分析
/**
* @param s 原始字符串
* @return 返回最后一个子串
*/
public int lengthOfLastWord(String s) {
//定义end保存最后一个非空字符串的最后一个字符索引,默认为len - 1,考虑最后一个字符串为空的情况
int end = s.length() - 1;
//循环移除最后的空串
while (end >= 0 && s.charAt(end) == ' '){
end--;
}
//判断字符串是否为空串
if (end < 0){
return 0;
}
//定义start保存最后一个非空字符串的第一个字符索引
int start = end;
//循环寻找start位置
while (start >= 0 && s.charAt(start) != ' '){
start--;
}
//循环结束时start已经指向最后一个字符串的第一个字符索引
return end - start;
}