Leetcode-58 最后一个单词的长度
题目描述
给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
示例:
输入: “Hello World”
输出: 5
class Solution {
public int lengthOfLastWord(String s) {
int count=0;
int ind=0;
boolean flag=false;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)!=' ')
{
flag=true;
count++;
}
else
{
flag=false;
if(count!=0)
ind=count;
count=0;
}
}
if(flag==false)
return ind;
else
return count;
}
}
1、注意:count != 0才给ind赋值,防止多个空格连续出现的情况
先从后面开始过滤空格,找到单词尾部,再找到单词头部,两者相减,得到单词长度
class Solution {
public int lengthOfLastWord(String s) {
int end=0;
int start=0;
int i;
for(i=s.length()-1;i>=0;i--)
{
if(s.charAt(i)!=' ')
{
end=i;
break;
}
}
if(i<0)
return 0;
for(int j=end-1;j>=0;j--)
{
if(s.charAt(j)==' ')
{
start=j+1;
break;
}
}
return end-start+1;
}
}
出过的错:
1、令start=j; return end-start;
在输入为"a"时出错
改为start=j+1; return end-start+1;
2、没有加if(i<0) return 0;
的判断条件,在输入为""时出错,尽管输入字符串的长度为0但在循环条件内可以为i赋值-1,仍成立