华为oj 字符串最后一个单词的长度

计算了一下,前前后后大概大概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还是很巧妙的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值