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

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

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-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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