题解 | #字符串最后一个单词的长度#
字符串最后一个单词的长度
https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da
易错点
- 读取
第一次读取是使用了cin,则无法读入空格后的字符串
应该使用getline()
- pos_prev_pos的判定
最后的if语句中
if (size_prev_pos != s.size())
{
result = s.substr(size_prev_pos);
}
这里是,循环完,找到最后一个空格后,size_pos变成-1,size_prev_pos指向最后一个空格的后一个位置,即最后一串字符的起始位置
此时应该判定if(指向位置<字符串.size()),而不是字符串.size()-1,因为如果最后一个字符串为单个字符时,size()-1指向最后一个字符位置,与size_prev_pos重合
代码
#include <iostream>
#include <string>
using namespace std;
class Solution
{
public:
void stringlast(string s)
{
string cut = " ";
int size_pos = 0;
int size_prev_pos = 0;
string result;
while ((size_pos = s.find_first_of(cut, size_pos)) != string::npos)
{
result = s.substr(size_prev_pos, size_pos - size_prev_pos);
size_prev_pos = ++size_pos;
}
if (size_prev_pos != s.size())
{
result = s.substr(size_prev_pos);
}
cout << result.size() << endl;
}
};
int main() {
string s;
getline(cin, s);
Solution sol;
sol.stringlast(s);
}
#c++#刷题 - 解题 文章被收录于专栏
记录遇到的题目,解题思路和相关知识点