按指定顺序排序单词

【问题描述】

        一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。

        我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序 。

        比方说,句子 "This is a sentence" 可以被打乱顺序得到 "sentence4 a3 is2 This1" 或者 "is2 sentence4 This1 a3" 。

        给你一个 打乱顺序 的句子 s ,它包含的单词不超过 9 个,请你重新构造并得到原本顺序的句子。

【输入形式】

        输入只有一行字符串 s, 其中:

        2 <= s的长度 <= 200

        s 只包含小写和大写英文字母、空格以及从 1 到 9 的数字。

        s 中单词数目为 1 到 9 个。

        s 中的单词由单个空格分隔。

        s 不包含任何前导或者后缀空格。


【输出形式】

        只有一行,原本的句子,不包括数字,不能有前导空格或后缀空格
【样例输入】

is2 sentence4 This1 a3

【样例输出】

This is a sentence

【样例说明】
【评分标准】

    //8. 按指定顺序排序单词
    vector<string> v(10);//定义一个大小为10的字符串数组,用来存储排好之后的字符串
    string s;
    getline(cin,s);
    int len=s.length(),sum=0,j=0,i=0;//i用来记录下一个单词首字母的位置
    while(j<len)
    {
        if(s[j]!=' ')
            i++;
        if(s[j]>'0'&&s[j]<='9')
        {
            i--;//遇到数字不算字母不统计,往回减一
            int a=s[j]-'0';//转化为数字
            v[a-1]=s.substr(j-i,i);//从位置j-i开始拷贝i个字母
            i=0;//i用于计算单词的长度
        }

        j++;
    }
    for(int i=0;i<10;i++)
    {
        if(!v[i].empty())
            cout << v[i] << " ";
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值