【算法基础】对输入的字符串进行排序后输出

330 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

题目描述

这是一道在牛客上面的常见输入输出类型的题目,题目链接:ac.nowcoder.com/acm/contest… 对输入的字符串进行排序后输出

输入描述

多个测试用例,每个测试用例一行。 每行通过,隔开,有n个字符,n<100

输出描述

对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格

限制

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld

示例

输入

a,c,bb
f,dddd
nowcoder

输出

a,bb,c
dddd,f
nowcoder

分析

题目的输入描述为多个测试用例,每个测试用例一行。说明输入的一行测试用例为一个字符串,用逗号前后隔开的为单词。关键是对单词进行排序输出,题目的输出要求是对单词进行字典排序,即按照a,b,c等顺序排序。输入输出都比较好理解,关键是怎么来处理这个字符串。因为输入的是字符串,我们可以对字符串进行一些操作如拼接成我们要的单词。具体代码实现可以参考下面的。 及

C++代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string str;
    while(cin>>str){
        string temp="";//定义一个临时的空字符串
        vector<string> vec;//定义一个字符串类型的向量容器
        for(int i=0;i<str.size();++i){//循环遍历字符串
            if(str[i]==','){//检测字符是不是逗号
                vec.push_back(temp);//如果是逗号将temp的值存入向量容器中
                temp="";//将temp重新赋值为空字符串
            }else{
                temp+=str[i];//如果不是逗号将当前字符放入temp字符串末尾
            }
        }
        vec.push_back(temp);//将最后一个单词存入向量容器中,因为最后一个单词后面没有逗号
        sort(vec.begin(),vec.end());//对向量容器中的元素排序
        for(int i=0;i<vec.size()-1;++i){//循环遍历向量容器中的元素
            cout<<vec[i]<<",";//输出容器中的元素
        }
        cout<<vec[vec.size()-1]<<endl;//输出最后一个容器中的元素,题目要求最后一个单词后面没有逗号,所以单独输出。
    }
    return 0;
}