[leetCode]58.最后一个单词的长度
程序员文章站
2024-03-14 21:48:29
...
解法一
先去除字符串首尾空格,再遍历整个字符串:
- 如果为
‘ ’
则为一个新词开始,计数器置0 - 否则计数器+1
- 返回计数器的值
class Solution {
public int lengthOfLastWord(String s) {
int left = 0, right = s.length() - 1, ans = 0;;
while(left < right && s.charAt(left)==' ') ++left;
while(left < right && s.charAt(right)==' ') --right;
for(int i = left; i <= right; i++){
if(s.charAt(i)==' ')
ans = 0;
else ++ans;
}
return ans;
}
}
解法二
遍历整个字符串,如果遇到非空字符,只需判断前一个字符是否为' '
- 是:新词开始,计数器置1;
- 否: 不是新词,计数器+1;
由于i=0
时无法判断前一个字符是否为' '
所以需要加以判断,i=0
时计数器+1
class Solution {
public int lengthOfLastWord(String s) {
int ans = 0;
for(int i = 0; i < s.length(); i ++){
if(s.charAt(i) != ' '){
if(i != 0 && s.charAt(i - 1) == ' ')ans = 1;
else ans++;
}
}
return ans;
}
}
解法三
因为只关心最后一个单词的长度,所以只需从后向前遍历
class Solution {
public int lengthOfLastWord(String s) {
int right = s.length() - 1, ans = 0;
while(right >= 0 && s.charAt(right) == ' ')--right;
while(right >= 0 && s.charAt(right) != ' '){
--right;
++ans;
}
return ans;
}
}
上一篇: Caffe Loss层 - HingelossLayer
下一篇: Mac上如何安装JDK