58. Length of Last Word
题目描述和难度
- 题目描述:
给定一个仅包含大小写字母和空格 ' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World" 输出: 5
- 题目难度:简单。
- 英文网址:58. Length of Last Word 。
- 中文网址:58. 最后一个单词的长度 。
思路分析
求解关键:
参考解答
参考解答1:这是我一开始的写法,从前向后遍历。
public class Solution {
public int lengthOfLastWord(String s) {
int len = s.length();
// 特别注意 "a " 这种特殊的测试用例
// 特别注意 "b a ",因此,要使用 while
while (len > 0 && s.charAt(len - 1) == ' ') {
len--;
}
if (len == 0) {
return 0;
}
int begin = -1;
int index = 0;
while (index < len) {
char curC = s.charAt(index);
if (curC == ' ') {
begin = index;
}
index++;
}
return len - 1 - begin;
}
public static void main(String[] args) {
String s = "a ";
Solution solution = new Solution();
int lengthOfLastWord = solution.lengthOfLastWord(s);
System.out.println(lengthOfLastWord);
}
}
参考解答2:其实从后向前遍历是更好的办法。
public class Solution2 {
public int lengthOfLastWord(String s) {
int len = s.length();
while (len > 0 && s.charAt(len - 1) == ' ') {
len--;
}
if (len == 0) {
return 0;
}
int res = 0;
while (len > 0 && s.charAt(len - 1) != ' ') {
res++;
len--;
}
return res;
}
public static void main(String[] args) {
String s = "a ";
Solution2 solution2 = new Solution2();
int lengthOfLastWord = solution2.lengthOfLastWord(s);
System.out.println(lengthOfLastWord);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0058-length-of-last-word ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。