华为机试题 001计算字符串最后一个单词的长度

来源:互联网 发布:软件怎么做虚拟机 编辑:程序博客网 时间:2024/05/18 03:29
/*题目描述:计算字符串最后一个单词的长度,单词以空格隔开。输入:一行字符串,非空,长度小于5000。输出:整数N,最后一个单词的长度。*/#include<iostream>#include<string.h>using namespace std;int main(){char str[5000];//cin>>str;//错误一:cin的输入以空格未结束标志,但是输入的字符串中可能有空格,就会出错gets(str);//gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取int len=strlen(str);if(0!=len){int num=0;while(' '==str[len-1])//注意:要考虑字符串末尾有空格的情况len--;for(int i=len-1;i>=0;i--){if(' '==str[i])break;num++;}cout<<num<<endl;}return 0;}


#include<iostream>#include<string>using namespace std;int main(){string str;getline(cin,str);if (""!=str)//字符串非空{int num=0;int pos=str.find_last_not_of(' ',string::npos);//从后往前找第一个不是空格的字符位置while ( pos>=0 && ' '!=str.at(pos) )//注意' '!=str.at(pos)必须放在后面,因为at()会检查是否越界{num++;pos--;}cout<<num<<endl;}return 0;}/*注意' '!=str.at(pos)必须放在后面,因为at()会检查是否越界如果最后一个单词的长度就是整个字符串的长度,pos=0满足执行循环体后pos=-1,at(-1)会抛出异常,而pos>=0放在前面发现条件不满足直接退出循环,不会出现at(-1)的情况*/


0 0
原创粉丝点击