华为机试-字符串最后一个单词的长度(较难)

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

http://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da

题目描述

计算字符串最后一个单词的长度,单词以空格隔开。

方法1:

比较简洁,利用了cin的特性,到空格或者回车停止读取。(我要夸夸自己)

int main(){
    string s;
    while(cin>>s);
    cout<<s.size();
    return 0;
}

如果笔试是填写函数话

#include<sstream>
#include<algorithm>
int solution(string s){
    stringstream ss;
    reverse(s.begin(),s.end());
    ss<<s;//stringstream和输入流一样,默认读取到空格或'\n',但不能像前面一样写while(ss<<s),会重复读取第一个单词,因为s不更新
    ss>>s;
    return s.length();
}

方法2:

用getline读取全部字符串(回车时停止),倒序遍历找到第一个空格或者越界0的情况。

#include<iostream>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    if(s.length()==0) return 0;
    int i;
    for(i=s.length()-1;i>=0&&s[i]!=' ';i--);
    cout<<s.length()-(i+1);//或者  cout<<(s.substr(i+1)).size();
    return 0;
}

补充:

#include <string>
getline(输入流,string类型的引用存储流信息,截断字符-默认'\n')

方法3:

字符串反序,这样最后一个字符串就放到了最前面
用find函数找到第一个空格的pos
存在时,减下差值就是结果;不存在空格时,说明只有一个单词吗,直接返回length

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
在太阳里长大的人:公司就仨人吧😂
点赞 评论 收藏
分享
昨天 13:37
重庆大学 C++
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务