首页 > 试题广场 >

字符串排序(3)

[编程题]字符串排序(3)
  • 热度指数:35765 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
对输入的字符串进行排序后输出
打开以下链接可以查看正确的代码
https://ac.nowcoder.com/acm/contest/5657#question



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


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

输入

a,c,bb
f,dddd
nowcoder

输出

a,bb,c
dddd,f
nowcoder
推荐
点击链接查看正确的代码https://ac.nowcoder.com/acm/contest/5657#question
编辑于 2020-12-29 17:34:04 回复(0)
while(true) {
    let lines = readline()
    if(lines) {
        let arr = lines.split(',')
        print(arr.sort().join(','))
    } else {
        break
    }
}

发表于 2022-08-18 00:10:07 回复(0)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    string s;
    vector<string> res;
    char c;
    do{
        c = cin.get();
        if(c != ',' && c != '\n')
            s += c;
        else if(c == ','){
            res.push_back(s);
            s.clear();
        }
        else{
            if(!s.empty()){
                res.push_back(s);
                s.clear();
            }
            sort(res.begin(), res.end());
            for(int i = 0; i < res.size(); ++i){
                cout << res[i];
                if(i < res.size() - 1)
                    cout << ',';
            }
            cout << endl;
            res.clear();
        }
    }while(c != EOF);
}

发表于 2021-08-27 17:00:30 回复(0)
import sys
for line in sys.stdin:
    # 定义一个输出空字符串
    Str = ""
    # strip()可用于删除换行符
    List = list(map(str, line.strip().split(',')))
    # 对字符串列表进行排序
    List.sort()
    # print(List)
    for i in range(len(List)):
        Str += List[i]
        if i < len(List) - 1:
            Str += ','
            # print(Str)
    print(Str)

发表于 2022-01-15 10:58:46 回复(0)
#include <iostream>
#include<set>
#include<string>
using namespace std;

int main() {
    string s1;
    while (cin >> s1) {
        set<string> s;
        if(s1[s1.size()-1]==','){
        s1=s1.substr(0,s1.size()-1);
        
        }
        s.insert(s1);
        while (cin >> s1) {
            if(s1[s1.size()-1]==','){
        s1=s1.substr(0,s1.size()-1);
        }
        s.insert(s1);
            char c;
            c = getchar();
            if (c == '\n') {
                break;
            }
        }
        for (set<string>::iterator it = s.begin(); it != s.end(); it++) {
            if(it!=s.end()--)
            cout << *it << ", ";
            else
            cout<<*it;
        }
        cout << endl;

    }

}
本人菜鸡,友友们能帮忙看下这个有什么问题吗?
发表于 2023-11-20 22:10:56 回复(0)
#include <iostream>  
#include <algorithm>  
#include <string>  
using namespace std;  
int main() {  
    string line;  
    while (getline(cin, line)) 
    {  
        // 解析输入的行,获取字符串的数量n  
        int i=0,n = line.size();  
        string arr[n]; 
        int t=0; 
        // 根据空格分割字符串  
        while(i < n) 
        {  
            int pos = line.find(' ', i); 
            if(pos!=-1) 
            {
                arr[t++] = line.substr(i, pos - i);  
                i=pos+1;
            }
            else
            {
                arr[t++] = line.substr(i,n);
                break;  
            }    
        }  
        // 对字符串数组进行排序 
        //cout <<t;
        sort(arr, arr + n);  
        // 输出排序后的字符串  
        for (int i = 0; i < n; i++) 
        {  
               cout <<arr[i];
            if(arr[i]!="")
                cout<<' ';      
        }  
        cout << endl;  
    }  
    return 0;  
}
/*a c bb
f dddd
nowcoder*/
编辑于 2023-11-20 19:58:58 回复(0)
测试通过,提交不通过,搞不懂为什么
import sys

for line in sys.stdin:
    a = line.strip().split(',')
    a_list = sorted(a)
    for ax in a_list:
        if ax==a_list[-1]:
            print(ax,end='')
        else:
            print(ax,end=',')
    print()


发表于 2023-09-16 00:30:53 回复(0)
import sys

for line in sys.stdin:
    a = line.split(',')
    a[-1] = a[-1][:-1] 
    # print(a)
    a = sorted(a)
    ans = ""
    for char in a:
        ans += char + ','
    print(ans[:-1])
发表于 2023-09-04 20:16:12 回复(0)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intmain(){
    inti=0;
    chartmp_str[100],str[][100]={""};
    char*token;
    while(scanf("%s",&tmp_str)!=EOF){
        token = strtok(tmp_str,",");
        while(token!=NULL){
            strcpy(str[i],token);
            token = strtok(NULL,",");
            i++;
        }
        //用函数qsort排序
        //qsort(str,i,sizeof(str[0]),strcmp);
        //冒泡排序
        for(intm=0;m<i-1;m++){
            for(intn=m+1;n<i;n++){
                if(strcmp(str[m],str[n])>0){
                    strcpy(tmp_str,str[m]);
                    strcpy(str[m],str[n]);
                    strcpy(str[n],tmp_str);
                }
            }
        }
        //输出
        for(intj=0;j<i-1;j++){
            printf("%s,",str[j]);
        }
        printf("%s\n",str[i-1]);
        i=0;
    }
    return0;
}
不知道为什么用函数qsort()排序,没有效果
只能手写冒泡排序的代码才可以

发表于 2023-06-21 23:38:42 回复(0)
import sys

for line in sys.stdin:
    a = line.split()
    a.sort()
    print(",".join(a))
发表于 2023-04-10 15:50:15 回复(0)
给个c++版本
  1. 每次读入一行字符串,使用 getline 函数。
  2. 将每个字符串按照逗号分隔存入 vector 中。
  3. 对 vector 中的元素进行排序,使用 sort 函数。
  4. 输出排序后的字符串,注意最后一个字符串后面没有逗号。
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

void print_vec(vector<string>& data){
    for(int it = 0; it < data.size()-1; it++){
        cout << data[it] << ",";
    }
    cout << data[data.size()-1] << endl;
    data.clear();
}
int main() {
    vector<string> v;
    string str;
    while(getline(cin,str)){
        size_t pos = 0;
        string delimiter = ",";
        while ((pos = str.find(delimiter)) != string::npos) {
            v.emplace_back(str.substr(0, pos));
            str.erase(0, pos + delimiter.length());
        }
        v.push_back(str);
        sort(v.begin(), v.end());
        print_vec(v);
    }
}


编辑于 2023-03-13 02:25:21 回复(0)
while True:
    try:
        data = input().split(",")
        data.sort()
        print(",".join(data))
    except:
        break

发表于 2022-08-15 23:51:17 回复(0)
importjava.io.*;
importjava.util.*;
publicclassMain{
    publicstaticvoidmain(String [] args) throwsIOException{
        BufferedReader bf = newBufferedReader(newInputStreamReader(System.in));
        try{
            while(true){
                String [] st = bf.readLine().split("\\,");
                Arrays.sort(st);
                String ans = "";
                for(String s: st){
                    ans += s+",";
                }
                System.out.println(ans.substring(0,ans.length()-1));
            }
        }catch(Exception e){
            return;
        }
    }
}
发表于 2022-08-10 11:11:46 回复(0)
不知道哪里错了,字符串不排序
#include<bits/stdc++.h>
using namespace std;
int main(){
    vector<string> res;
    string temp;
    while(cin>>temp){
        if(temp==","){
            continue;
        }
        res.push_back(temp);
        if(cin.get()=='\n'){
            sort(res.begin(),res.end());
            for(int i=0;i<res.size();i++){
                if(i!=res.size()-1)
                    cout<<res[i]<<',';
                else
                    cout<<res[i]<<endl;
            }
            res.clear();
        }
    }
}


发表于 2022-08-05 17:07:18 回复(1)
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
using std::cin;
using std::cout;
using std::sort;
using std::vector;
using std::string;
using std::istringstream;
int main()
{
    string line;
    while(std::getline(cin,line))
    {
        istringstream iss(line);
        string tmp;
        vector<string> str_vec;
        while(std::getline(iss,tmp,','))
        {
            str_vec.push_back(tmp);
        }
        sort(str_vec.begin(),str_vec.end());
        for(int i = 0; i < str_vec.size(); i++)
        {
            cout << str_vec[i];
            if(i != str_vec.size() - 1)
                cout << ",";
        }
        cout << std::endl;
    }
    return 0;
}


发表于 2022-03-30 16:06:44 回复(0)
while(true) {
    let line = readline();
    if (line) {
        let arr = line.split(',');
        let ret = [];
        let min = arr[0];
        let minIndex = 0;
        while (arr.length){
            for(let i = 0; i < arr.length; i++) {
                if(arr[i] < min) {
                    min = arr[i];
                    minIndex = i;
                }
            }
            arr.splice(minIndex,1);
            ret.push(min);
            min = arr[0];
            minIndex = 0;
        }
        console.log(ret.join(','));
    } else {
        break;
    }
}

发表于 2021-09-04 20:42:34 回复(0)
while True:
    try:
        s = list(input().split(','))
        s.sort()
        result = ','.join(s)
        print(result)
    except:
        break

发表于 2021-05-31 18:37:33 回复(0)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace  std;

vector<string> split(string s){
    int beg=0;
    vector<string> res;
    for (int i = 0; i < s.size(); ++i) {
        if (s[i]==','){
            string s1=s.substr(beg,i-beg);
            res.push_back(s1);
            beg=i+1;
        }
    }
    if (beg!=s.size()){
        auto s1=s.substr(beg,s.size()-beg);
        res.push_back(s1);
    }
    return res;
}
int main() {

    string s;
    vector<string> vector1;
    while (cin>>s){
        auto vec1=split(s);
        sort(vec1.begin(),vec1.end());
        cout<<vec1[0];
        for (int i = 1; i < vec1.size(); ++i) {
            cout<<','<<vec1[i];
        }
        cout<<endl;
    }
    return 0;
}

发表于 2021-03-20 15:44:15 回复(0)

热门推荐

通过挑战的用户