题目
leetCode 第 58 题,最后一个单词的长度 关联类型:字符串
给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World"
输出:5
示例 2:
输入:s = " "
输出:0
提示:
1 <= s.length <= 104
s 仅有英文字母和空格 ' ' 组成
做题时间
class Solution {
public int lengthOfLastWord(String s) {
}
}
以上给出方法输入参数,完成作答。
题目分析
- 看到这道题之后,我不知道你们是咋想的,反正我第一时间想到的是 split 进行分割,大概是没救了。。。
- 还有一种思路是用总长度减去最后一个 ‘ ’ 所在的位置,得出最后的长度
解答分析
本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
本题提供两种解题思路,刚开始我直接就想用 split 函数进行解题,大概是没救了,,,,
第二种方式则是直接用长度相减,速度则会快一些。
解答成功:
执行耗时:1 ms,击败了38.61% 的Java用户
内存消耗:36.8 MB,击败了48.22% 的Java用户
class Solution {
public int lengthOfLastWord(String s) {
// 进行分割
String[] s1 = s.split(" ");
if (s1.length > 0) {
//返回最后一个单词的长度
return s1[s1.length - 1].length();
} else {
return 0;
}
}
}
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:37.1 MB,击败了13.09% 的Java用户
class Solution {
public int lengthOfLastWord(String s) {
//先进行末尾空格的去除,同时也会将‘ ’空格进行去除
s=s.trim();
//返回总长度的下标减去最后一个空格的下标
return s.length()-1-s.lastIndexOf(" ");
}
}