58. 最后一个单词的长度
58. Length of Last Word
题目:
给定一个仅包含大小写字母和空格' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回0
。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: “Hello World”
输出: 5
题解:
主要思路是从右向左遍历。先找到第一个非空格字符,作为最后一个单词的结束字符,开始计数cnt
,继续往左遍历,找到第一个空格,即单词的开始位置,计数结束,返回cnt
。
技巧:
从右往左遍历。
C++
class Solution {
public:
int lengthOfLastWord(string s) {
int n = s.length();
int i = n - 1;
while(i >= 0 && s[i] == ' ') { // 寻找第一个非空格字符
i--;
}
if(i < 0) {
return 0;
}
int cnt = 0;
while(i >= 0 && s[i] != ' ') {// 统计非空格字符的长度,即为最后一个单词的长度
cnt++;
i--;
}
return cnt;
}
};
Java
class Solution {
public int lengthOfLastWord(String s) {
int n = s.length();
int i = n - 1;
while(i >= 0 && s.charAt(i) == ' ') {// 从右往左寻找第一个非空格字符
i--;
}
if(i < 0) {
return 0;
}
int cnt = 0;
while(i >= 0 && s.charAt(i) != ' ') {// 统计非空格字符即为最后一个单词的长度
cnt++;
i--;
}
return cnt;
}
}
Python
class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""
n = len(s)
i = n - 1
while i >= 0 and s[i] == ' ': # 从右往左找第一个非空格字符
i -= 1
if i < 0:
return 0
cnt = 0
while i >= 0 and s[i] != ' ': # 统计连续非空格字符的数量,即为最后一个单词的长度。
i -= 1
cnt += 1
return cnt
JavaScript
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
var n = s.length;
var i = n - 1;
while (i >= 0 && s[i] == ' ') {//从右往左找第一个非空格字符,即最后一个单词的结束字符
i -= 1;
}
var cnt = 0;
while(i >= 0 && s[i] != ' ') {//从右往左找第一个空格符号,即最后一个单词的开始位置
i -= 1;
cnt += 1;
}
return cnt;
};