力扣题目描述为:
给定一个仅包含大小写字母和空格 ' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
有两种解法分别为:
第一种思路:将字符串使用空格分隔符分割成字符串数组,然后获取数组中最后一个元素的长度
public int lengthOfLastWord(String s) {
if(s==null){
return 0;
}
String[] sub=s.split(" ");
if(sub.length>=1)
return sub[sub.length-1].length();
else return 0;
}
第二种思路:使用trim()方法先将字符串中的前导和尾随空格删除,定义一个可变长字符串,从后向前遍历字符串,若遇到空格则退出,若不是空格则将该字符串中的该位置上的元素添加至新字符串,最后返回新字符串的长度即可。
public int lengthOfLastWord(String s) {
//使用trim删除前导和尾随空格
String S=s.trim();
if(S==null){
return 0;
}
StringBuffer result=new StringBuffer();
for(int i=S.length()-1;i>=0;i--){
if(S.charAt(i)==' '){
break;
}
else{
result.append(S.charAt(i));
}
}
return result.toString().length();
}
总结:虽然两种方法都是利用字符串的基本操作,但是第二张运行效率却高于第一种。