1)题目
最后一个单词的长度
要求:
给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
样例:
示例:
输入: “Hello World”
输出: 5
2)思路
从前往后计数,计数非0的字符存在res里,遇到空格就清空res,直到遇到\0字符,返回res的长度
3)代码
#pragma once
#include <vector>
#include <string>
using namespace std;
class Solution {
public:
int lengthOfLastWord(string s) {
/* istringstream解法
istringstream ss(s);
string res;
while(ss>>res){}
return res.length();
*/
/*常规解法*/
int len = s.length();
string res = "";
for (int i = 0; i < len; i++)
{
if (s[i] != ' ')//非空字符,对res进行累加
res += s[i];
if (s[i] == ' '&&s[i + 1] != '\0'&&s[i + 1] != ' ')//当前字符为空' ',且后一字符不为空时,对res进行清空操作 【s[i+1]!=' '是为了解决"b a "这种奇葩的输入情况】
res = "";
else if (s[i + 1] == '\0')//当到了结束符时,返回当前的res的长度
return res.length();
}
return res.length();
}
};