计算了一下,前前后后大概大概3个多月总算是把华为oj,初级中级的所有题目全部刷完了,先说说感受吧,在做的过程中其实一直想说一个字“烂”,题目描述不清晰,结果输出描述不清晰,测试用例很少,但是坚持下来了就会有收获,中间其实有很多时候想停下来的,但是还是那句话,既然做,就做好它吧!建议所有准备刷华为oj的同学们,先思考题目,有了整体思路,在看看底下的评论,有很多注意事项,之后会不定期地上传自己的一些程序,争取做到有解析,有注意事项!
话不多说,上题
此题只是简单的入门题整体没有任何难度,整体思路获取整行字符串,从后往前数,找到第一个空格,但是我个人认为还需要注意就是在字符串的最后如果有空格需要过滤(虽然测试用例中没有这种用例),例如(abcd空格空格),代码如下。
#include <iostream>
using namespace std;
int main()
{
char str[128];
gets(str);
int i=0;
int length=strlen(str);
if(length<=0)
{
cout<<i<<endl;
return 0 ;
}
while(str[length-1]==' ') //过滤空格
length--;
while(length>=1&&str[length-1]!=' ') //length>=1判断是必要的
{
length--;
i++;
}
cout<<i<<endl;
return 0;
}
结论:这道题虽然简单,但是对于程序判断界线的完整性还是有一定考察的。
在另一个网站上看到了更方便的解法:
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;
int main()
{
//方法一
string str, cur, pre;
getline(cin, str);
istringstream line(str);
while (line >> cur) {
pre = cur;
}
cout << pre.length() << endl;
}结论:利用istringstream还是很巧妙的

2229

被折叠的 条评论
为什么被折叠?



