测试用例
输入字符串 ---输出结果
hello world ---5
world ---5
' ' ---0
因此,应考虑输入字符串为空、输入字符串没有空格及输入字符串符合题意有空格三种情况。
代码1
这里根据自己写的测试用例,分别讨论几种不同的情况。首先,将输入的字符串全部接收,存储在input_str字符串里,然后统计字符串内空格数目,根据空格数目的不同来确定最后一个单词的长度。
#include <iostream>
#include <string>
using namespace std;
int main(){
string input_str;
int num;
getline(cin,input_str);
if(input_str.size() == 0) { //若输入字符串为空
num = 0;
}
else{
int count = 0;
for(int i = 0; i < input_str.size(); i++){
if(input_str[i] == ' ')
count++;
}
if(count == 0){ //输入字符串没有空格
num = input_str.size();
}
else{ // 输入字符串符合题意有空格
for(int i = input_str.size() - 1; i >= 0; i--){
if(input_str[i] == ' '){
num = input_str.size() - 1 - i;
break;
}
}
}
}
cout << num << endl;
return 0;
}
代码2
其实还有一种更简便的方法,这里可以用到cin>>的特性,即接收缓冲区内的输入字符串,遇空格、Tab或者回车停止,因此每次接收都只会接收一个单词。若不断将这个单词赋值给一个字符串a,则会不停刷新字符串a的值,直到最后一次赋值。此时,输出字符串的长度即可。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
int i; //只是用作刷新字符串a的值,无其他意义
while(cin >> a)
{
i++;
}
cout << a.length() << endl;
return 0;
}
运行结果
网友评论