版权声明: https://blog.csdn.net/li_xunhuan/article/details/90084492
题目描述: 给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: “Hello World” 输出: 5
代码1:
class Solution {
public int lengthOfLastWord(String s) {
if(s==null||s.length()==0)
return 0;
String[] str=s.split(" ");
if(str.length==0)
return 0;
return str[str.length-1].length();
}
}
注意事项: 1.以空间换时间,这是此代码的思想 2.注意split的用法,返回的是一个数组,而其中的元素是字符串 3.如果一个字符串由若干的空格,并且其没有字母表示,那么调用String的split()方法所返回的不是一个null,而是一个空数组. 4.
方法二:利用String内的charAt()方法,逻辑上是字符串最后开始找,没找到单词继续找,找到单词,开始记录单词长度,并且遇到的第一个空格停止循环。 此方法的关键就是将逻辑翻译为机器逻辑,跳出循环一定是要在之前有字符串的情况下才能执行,这逻辑就是count>0,机器语言是如此精炼,所以,在敲代码是首先考虑的是自己已经定义好的变量作为下面的逻辑判断变量,而不是先去想新构造一个变量
代码2:
class Solution {
public int lengthOfLastWord(String s) {
if(s==null){
return -1;
}
int length=s.length();
int count =0;
for(int i=length-1;i>=0;i--){
if(s.charAt(i)!=' '){
count++;
}else{
if(count>0)
break;
}
}
return count;
}
}
方法3:利用String 类内的trim方法: 例子: String str = “ Life is fantastic! ”; 那么调用str.trim();后,其字符串就前后删除空格,中间空格保留。 返回值为“Life is fantastic! ”,但是原来的str字符串并没有变化 我们利用上面性质,很容易地进行处理,不需要考虑末尾可能存在的空格或连续空格了。
代码3:
Solution {
public int lengthOfLastWord(String s) {
if(s==null){
return -1;
}
String s2=s.trim();
int length=s2.length();
int count =0;
if(length==0){
return 0;
}
for(int i=length-1;i>=0;i--){
if(s2.charAt(i)!=' '){
count++;
}else{
break;
}
}
return count;
}
}