华为OJ一道题目,计算字符串最后一个单词的长度,单词以空格隔开。

时间:2023-01-07 13:06:42
#include <iostream>
#include<string>
using namespace std;
int main(int argc, char** argv) {

string str;
int count=0;
getline(cin,str);
for(int i=str.size()-1;i>0;--i)
{
if(str[i]==' ')
{
break;
}
++count;
}
cout<<count<<endl;
return 0;
}
很郁闷,为什么在OJ平台上就通不过呢?

2 个解决方案

#1


只有1个单词不就错了,改为i=len-1;i>=0

#2


首先当只有一个单词的时候,是出现少一位的情况;
其次你的程序并不能分析如果最后一个单词后面另外存在空格的情况;
总的来说健壮性很差;当然华为的OJ上面也可能没有考虑这么多,做题的时候多看下面的评论少走弯路

#1


只有1个单词不就错了,改为i=len-1;i>=0

#2


首先当只有一个单词的时候,是出现少一位的情况;
其次你的程序并不能分析如果最后一个单词后面另外存在空格的情况;
总的来说健壮性很差;当然华为的OJ上面也可能没有考虑这么多,做题的时候多看下面的评论少走弯路