Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题58.最后一个单词的长度
前文
本题为查找类型题目,题目序号为58,主要考察以什么方式能够最快找到目标字符串。
题目信息
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
解题思路
根据题目信息可知,本题目主要目的在于从已给字符串中找到符合要求的字符串,且需要找到最后一个不包含空格字符串。按照常规思想来说,可能是先将字符串拆分,形成新的数组,获取数组的最后一个值,即可得到目标结果。而本题的解决方案此处采用循环的方式。将给定的字符串作为char数组进行遍历操作,遍历顺序为倒叙。当遇到第一个非空字符串时记录终点位置,当遇到下一个空字符串时记录起点位置,二者相减即可得到目标字符串的长度。注意由于可能存在字符串中无结尾空字符串的情况,因此要将起点默认是这为-1。以此方式即可得到目标解题答案。
解题代码
public int lengthOfLastWord(String s) {
int length = s.toCharArray().length;
if(length == 0){
return 0;
}
boolean begin = false;
int end = length - 1;
int start = -1;
for (int i = length - 1; i >= 0; i--) {
if(!begin && !" ".equals(String.valueOf(s.charAt(i)))){
end = i;
begin = true;
}
if(begin && " ".equals(String.valueOf(s.charAt(i)))){
start = i;
begin = false;
break;
}
}
return end - start;
}
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。