题目:HJ1 字符串最后一个单词的长度
https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da
思路:reverse反转字符串后读取第一个单词长度
题目要求读取最后一个单词长度。
1.首先读取控制台输入到string对象中,我是通过getline(cin, inputWords);实现的
2.因为题目要求读取最后一个单词长度,我整个字符串反转后,就转换为读取第一个单词长度。
举例:输入: I passed the first question 最后一个单词是question,长度是8。字符串反转后为 noitseuq tsrif eht dessap I 第一个单词为noitseuq 长度是8。
我是使用reverse(inputWords.begin(), inputWords.end());进行字符串反转的,需要引用头文件#include
代码如下
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
string inputWords;
getline(cin, inputWords);
reverse(inputWords.begin(), inputWords.end());
int lastWordLength = 0;
for (int i = 0; i < inputWords.size(); i++) {
if (inputWords[i] != ' ') {
lastWordLength++;
} else {
break;
}
}
cout << lastWordLength;
}
三行代码有意思解法:利用了cin特性
cin输入的机制,有空格会停止,系统把空格作为数据间的分隔符,整个英文句子会一个单词一个单词的读。非常巧妙的使用了cin的读取逻辑(来自charon110的评论)
作为答案确实可以,但是作为练习不可取
代码如下
#include <iostream>
using namespace std;
int main() {
string input;
while(cin >> input);
cout << input.size();
return 0;
}
};
谢谢观看,祝顺利!