感觉比较复杂

句子逆序

http://www.nowcoder.com/questionTerminal/48b3cb4e3c694d9da5526e6255bb73c3

首先先使用getline获取输入的字符("cin>>"读到空格会直接停止,这里算是一个坑);
获取完使用count计算空格数(单词的数量=空格+1);
创建blankpos数组用于存储空格位置;
获取完位置之后使用substr函数输出每一个单词,并在后面补充一个空格(这里我单独讨论了一下第一个和最后一个单词的情况)

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

int main(){
    string s;
    getline(cin, s);
    int count=0;
    for(int i=0;i<s.size();i++){
        if(s[i]==' '){
            count++;
        }
    }
    int blankpos[count+2];
    blankpos[0]=0;
    blankpos[count+1]=s.size()-1;
    int j=1;
    for(int i=0;i<s.size();i++){
        if(s[i]==' '){
            blankpos[j]=i;
            j++;
        }
    }
    for (int i = count + 1; i >= 1; i--)
    {
        if(blankpos[i-1]==0){
            cout << s.substr(blankpos[i - 1], blankpos[i] - blankpos[i - 1]);
        }
        else if(blankpos[i]==s.size()-1){
            cout << s.substr(blankpos[i - 1] + 1, blankpos[i] - blankpos[i - 1]) << " ";
        }
        else{
            cout << s.substr(blankpos[i - 1] + 1, blankpos[i] - blankpos[i - 1] - 1) << " ";
        }
    }
    return 0;
}
全部评论

相关推荐

07-14 12:22
门头沟学院 Java
点赞 评论 收藏
分享
_mos_:忍耐王
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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