首页 > 试题广场 >

字符串排序

[编程题]字符串排序
  • 热度指数:11903 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
 输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果

输入描述:
 一个字符串,其长度n<=20


输出描述:
 输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
示例1

输入

dcba

输出

abcd
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
    string str;
    while(cin >> str)
    {
        sort(str.begin(), str.end());
        cout << str << endl;
    }
    return 0;
}


发表于 2016-08-10 21:22:03 回复(1)
#include <algorithm>
#include <string.h>
#include <stdio.h>
using namespace std;

int main(){
    char arr[20];
    while(scanf("%s",arr)!=EOF){
        sort(arr, arr+strlen(arr));
        printf("%s\n",arr);
    }
}

发表于 2018-03-15 18:59:03 回复(0)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    string s;
    cin>>s;
    sort(s.begin(),s.end());
    cout<<s;

    return 0;
}
发表于 2019-03-01 15:10:54 回复(0)
#include<stdio.h>//直接按整数处理冒泡排序
#include<string.h>
int main()
{
    char a[20],t;int i,j;
    scanf("%s",a);
    for(i=0;i<strlen(a)-1;i++)
        for(j=0;j<strlen(a)-1-i;j++)
            if(a[j]>a[j+1])
            {//交换
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
    printf("%s",a);
}

编辑于 2020-04-03 16:12:23 回复(0)
java快速排序,记录一下
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char[] s=str.toCharArray();
        quicksort(s,0,s.length-1);
        String res=new String(s);
        System.out.print(res);
    }
    private static void quicksort(char[] sort,int left,int right){
        if(left<right){
            int mid=partition(sort,left,right);
            quicksort(sort,left,mid-1);
            quicksort(sort,mid+1,right);
        }
    }
    private static int partition(char[] sort,int left,int right){
        char tmp=sort[left];
        while(left<right){
            while(left<right&&sort[right]>tmp){
                right--;
            }
            if(left<right){
                sort[left]=sort[right];
                left++;
            }
            while(left<right&&sort[left]<tmp){
                left++;
            }
            if(left<right){
                sort[right]=sort[left];
                right--;
            }
        }
        sort[left]=tmp;
        return left;
    }
}


发表于 2020-03-24 22:20:22 回复(0)
Java 
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] array = scanner.nextLine().toCharArray();
        Arrays.sort(array);
        for (char c : array) {
            System.out.print(c);
        }
    }
}


发表于 2020-03-06 16:08:50 回复(0)
#include <stdio.h>
#include <algorithm>
#include <string.h>

using namespace std;

int main() {
	char str[20];
	while (scanf("%s", str) != EOF) {
		sort(str, str + strlen(str));
		printf("%s", str);
	}
	return 0;
}

发表于 2019-09-02 10:51:49 回复(0)
#include <stdio.h>
#include <algorithm>
#include <string.h>

using namespace std;

int main() {
    char array[30];
    while (EOF != scanf("%s", array)) {
        sort(array, array + strlen(array));
        printf("%s\n", array);
    }
    return 0;
}

发表于 2019-08-27 14:26:11 回复(0)
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    string str;
    cin>>str;
    int m[20];
    for(int i=0;i<str.size();++i)
    {
        m[i]=str[i];
    }
    sort(m,m+str.size());
    for(int i=0;i<str.size();++i)
    {
        str[i]=m[i];
    }
    cout<<str;
    return 0;
}

发表于 2019-05-08 19:01:50 回复(0)
public String sortString(String str) {
        char[] chars = str.toCharArray();  //转换char数组
        Arrays.sort(chars);  //排序
        return new String(chars);
    }
发表于 2019-03-20 11:04:30 回复(0)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    string S;
    while(cin >> S)
    {         sort(S.begin(),S.end());                  cout << S << endl;     }
    return 0;
}

发表于 2019-03-02 21:19:32 回复(0)

使用C语言中的qsort

#include <stdio.h>
#include <string.h>

int cmp(const void* a, const void* b) {
    return *(char*) a - *(char*) b;
}

int main() {
    char* data = calloc(21, sizeof(char));
    scanf("%s", data);
    qsort(data, strlen(data), sizeof(char), cmp);
    int i;
    for (i = 0; i < strlen(data); i++) {
        printf("%c", data[i]);
    }
    return 0;
}
编辑于 2019-02-24 19:40:03 回复(0)
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main(){
 char str[200];
 while(~scanf("%s",str)){
  sort(str,str+strlen(str));
  printf("%s\n",str);
 }
 return 0;
}

发表于 2019-02-21 09:55:28 回复(0)
while True:
    try:
        string = list(input())
        string.sort()
        print("".join(string))
    except Exception:
        break
编辑于 2018-10-01 17:17:32 回复(0)
//利用Arrays的sort方法,可以直接进行升序排列
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s = sc.nextLine();
            char[] arr = s.toCharArray();
            Arrays.sort(arr);
            for(int i=0; i<arr.length; i++)
            {
                System.out.print(arr[i]);
            }
        }
    }
}
发表于 2018-05-29 10:42:17 回复(0)

运行时间:45ms
占用内存:10712k
一开始自以为是的用TreeSet做(其实是想得太多想的复杂化了,用以下代码不是很简单的吗 也许效率会低一些)
发现通过率11%
哦原来测试用例中有重复字符
在输出时重复字符亦需要输出
然而Set是不允许有重复元素的。
finally, the code is:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()) {
            String str = scan.nextLine();
            char[] arr = str.toCharArray();
            for(int i = 0; i < arr.length - 1; i++) {
                for(int j = i + 1; j < arr.length; j++) {
                    if(arr[i] > arr[j]) {
                        Character biggerOne = arr[i];
                        arr[i] = arr[j];
                        arr[j] = biggerOne;
                    }
                }
            }
            for(int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]);
            }
        }
    }

}
发表于 2018-04-15 15:52:49 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        sort(s.begin(),s.end());
        cout<<s<<endl;
    }
}

发表于 2018-03-27 23:31:45 回复(0)
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
    char str[20];
    while(gets(str)){
        sort(str,str+strlen(str));
        cout<<str<<endl;
    }
    return 0;
}

发表于 2017-12-13 17:41:57 回复(0)
#include<iostream>
#include <string>
using namespace std;

int main()
{
	string str;
	while (cin>>str)
	{
		for (int i = 0; i < str.length(); i++)
			for(int j = 0; j < str.length() - i - 1; j++)
			{
				if(str[j+1] < str[j])
				{
					char temp = str[j+1];
					str[j+1] = str[j];
					str[j] = temp;
				}
			}
			cout<<str<<endl;
	}
	return 0;
}

发表于 2016-10-10 21:39:31 回复(0)
while True:
    try:
        string = raw_input().strip()
        string = list(string)
        string.sort(lambda x,y:cmp(x,y))
        print ''.join(string)
    except:
        break

发表于 2016-07-19 15:15:28 回复(0)