华为机试1——字符串最后一个单词的长度

这道题看起来真是道水题,可是有很多坑:

首先如果定义string来处理输入,是无法一次性输入全部的字符串的,因为输入字符串碰到空格会自动终止输入,当初学C语言的时候老师可是专门强调过的哈,看我第一版的代码:

int main(){
    string s;
    cin>>s;
    int n = 0;
    for(int i=s.size()-1;i>=0;i--){
        if(s[i]==' ')
            break;
        else
            n++;
    }
    cout<<n<<endl;
    return 0;
}

挂掉之后我意识到了这个问题,改成char来处理,这样同样会出现上述问题:

int main(){
    
    char a[5001];
    cin>>a;
    int n = 0;
    int i;
    for(i=5000;i>=0;i--){
        if(a[i]!='\0')
               break;
    }
    i--;
    for(;i>=0;i--){
        if(a[i]!=' ')
            n++;
    }
    cout<<n<<endl;
    return 0;
}

一时想不起来(太垃圾了),只好看评论区:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(){
    vector<string> v;
    string s;
    while(cin>>s){
        v.push_back(s);
    }
    cout<<v[v.size()-1].size()<<endl;
    
    return 0;
}

呵呵呵,用个vector<string>就解决了,用while(cin<<s)来处理输入的问题!

这让我突然想到了,当年刷PAT乙级的时候有一模一样的题目!!!!

这就很尴尬了……无地自容

发布了377 篇原创文章 · 获赞 344 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104973825