LeetCode --- 字符串、数组
简书专栏:https://www.jianshu.com/nb/41796568
知乎专栏:https://zhuanlan.zhihu.com/c_174823416
一、题目描述
来源:力扣(LeetCode)
给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。
如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。
示例:
输入: "Hello World"
输出: 5
要求实现函数:
public int lengthOfLastWord(String s) {}
二、实现思路以及代码
2.1 思路一:直接法
本题较简单,首先想到的就是根据空格分隔字符串,再返回即可。但是缺点也很明显,如果是一篇文章,那么会浪费大量的无用空间
public int lengthOfLastWord(String s) {
if(s.trim().equals("")) return 0;
s = s.trim();
String[] strs = s.split(" ");
return strs[strs.length - 1].length();
}
2.2 思路二:指针遍历法
定义一个变量count,从后向前扫描字符串,count依次增加,当扫描到空格的时候返回count即可,该方法在时间和空间上均优与方法一
public int lengthOfLastWord(String s) {
if(s.trim().equals("")) return 0;
s = s.trim();
int count = 0;
for(int i = s.length()-1; i >= 0; i--) {
if(s.charAt(i) != ' ') {
count++;
} else {
return count;
}
}
return count;
}
三、测试代码
public static void main(String[] args) {
String s1 = "hello world java";
String s2 = "hava a dream";
System.out.println(lengthOfLastWord(s1));
System.out.println(lengthOfLastWord(s2));
}
输出结果为:
4
5