给你一个字符串?s ,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词?是指仅由字母组成、不包含任何空格字符的最大子字符串。
输入:s = "Hello World"
输出:5
https://leetcode-cn.com/problems/length-of-last-word/
一、
?直接通过while循环去除空字符串,然后计算不为空的单词部分直到再次碰到空格。
代码:
int lengthOfLastWord(string s) {
int pos=s.length(), cnt=1;
while(pos>0 && s[--pos]==' '){}
while(pos>0 && s[--pos]!=' ')
cnt++;
return cnt;
}
使用一个for循环进行处理:
public int LengthOfLastWord(string s) {
int count = 0;
for (int i = s.Length - 1; i >= 0; i--)
{
if (s[i] != ' ') count++; //检测到字母
if (s[i] == ' ' && count != 0) break; //记完末单词碰到空格就退出,同时解决末单词后面还有空格的情况("a ")
}
return count;
}
使用string自带的find_first_not_of等函数:
int lengthOfLastWord(string s) {
int pos1 = s.find_last_not_of(' ');
if(pos1 == string::npos) return 0;
int pos2 = s.find_last_of(' ', pos1);
return pos2 == string::npos ? pos1 + 1 : pos1 - pos2;
}
还可以使用stringstream进行处理:
// 待续
|