首页 > 试题广场 >

图片整理

[编程题]图片整理
  • 热度指数:171111 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。

数据范围:每组输入的字符串长度满足


输入描述:

一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。



输出描述:

Lily的所有图片按照从小到大的顺序输出

示例1

输入

Ihave1nose2hands10fingers

输出

0112Iaadeeefghhinnnorsssv
 try:
    while True:
        string = raw_input()
        iList = list(string)
        iList.sort()
        outStr = ''.join(iList)
        print outStr
except EOFError:
    pass

人生苦短,我用Python

发表于 2016-07-30 15:13:45 回复(0)

#include <stdio.h>
#include <string.h>
void swap(char *a, char *b);
int main(){
    char a[1024];
    while(gets(a)){
    int n=strlen(a); //输入字符串长度
    //冒泡排序
    for(int j=n-1; j>0; j--){
        for(int i=0; i<j; i++){
               if(a[i]>a[i+1])
               swap(&a[i],&a[i+1]);
           }
        }
    //输出
    for(int i=0 ;i<n;i++){
            printf("%c",a[i]);
        }
    printf("\n");
    }
    return 0;
}
//交换函数
void swap(char *a, char *b)
{
    char tmp=*a;
          *a=*b;
          *b=tmp;
}
























发表于 2020-08-06 00:01:27 回复(0)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void*e1,const void*e2)
{
    return (*((char*)e1)-*((char*)e2));
}




int main()
{
    char arr[1001];
    scanf("%s",arr);
    qsort(arr,strlen(arr),sizeof(char),cmp);
    printf("%s",arr);
}
发表于 2022-08-22 00:16:41 回复(0)
直接使用冒泡法比较,字符比较大小就是ASCII的大小
#include<stdio.h>
#include<string.h>

void Printch(char* ch,int size)
{
	for (int i = 0; i < size - 1; i++)
	{
		for (int j = 0; j < size - 1 - i; j++)
		{
			if (*(ch + j) > *(ch+j + 1))
			{
				*(ch + j) ^= *(ch + j + 1);
				*(ch + j + 1) ^= *(ch + j);
				*(ch + j) ^= *(ch + j + 1);
			}
		}
	}
	puts(ch);

}
int main()
{
	char ch[1000];
	while(gets(ch))
    {
	int size = strlen(ch);
	Printch(ch,size);
    }
	return 0;
}


发表于 2022-02-19 15:48:57 回复(0)
//计数法
#include <stdio.h>
#include <string.h>
//0~9 0x30~0x39 A~Z 0x41~0x5A a~z 0x51~0x7A
const char scaii_list[3][2] = {{0x30,0x39},{0x41,0x5A},{0x61,0x7A}};
int main(){ 
  char in_str[1000] = {0};
  while (scanf("%s", in_str)!= EOF){
    //scanf("%s",in_str);
    char out_list[0x7A+1] = {0};
    int str_len = strlen(in_str);
    for(int i = 0; i < str_len; i++){
      out_list[in_str[i]]++;
    }
    int index = 0;
    while(index < 3){
      for(int i = scaii_list[index][0]; i <= scaii_list[index][1]; i++){
        for(int j = 0; j < out_list[i]; j++){
          printf("%c",i);
        }
      }
      index++;
    }
    printf("\n");
  }
  return 0;
}

发表于 2022-01-23 13:34:51 回复(1)
含有多组样例输入😂
using System;
namespace Test{
    class Program{
        static void Main(String[] args){
            string input;
            while((input = Console.ReadLine()) != null){
                var ch = input.ToCharArray();
                Array.Sort(ch);
                Console.WriteLine(ch);   
            }            
        }
    }
}


发表于 2021-09-25 16:33:18 回复(0)
while True:
    try:
        print("".join(sorted(input())))
    except:
        break
发表于 2021-09-14 22:02:02 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            char[] arr = sc.nextLine().toCharArray();
            Arrays.sort(arr);
            Arrays.asList(arr).stream().forEach(System.out::println);
        }
    }
}

发表于 2021-09-14 04:58:54 回复(1)
本来想用Arrays.sort(), 但想想对不起这题,难得有个机会可以练练排序算法
先把字符串的每个字符转换成ascii码,再用快排来解决排序问题,再把ascii码转化为字符。
import java.util.*;

public class Main{
    
    public static void main(String[] args){
        Scanner sc = new Scanner (System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            char[] ch = str.toCharArray();
            int[] ascii = new int[ch.length];
            for(int i = 0; i < ch.length; i++){
                ascii[i] = (int)ch[i];
            }
            
            QuickSort(ascii,0,ascii.length-1);
            
            for(int i = 0; i < ch.length; i++){
                ch[i] = (char)ascii[i];
            }
            
            System.out.println(String.valueOf(ch));
        }
    }
    
    private static void QuickSort(int[] a, int lo, int hi){
        if(hi <= lo) return;
        int j = partition(a,lo,hi);
        
        QuickSort(a,lo,j-1);
        QuickSort(a,j+1,hi);
       
    }
    
    private static int partition(int[] a,int lo, int hi){
        int i = lo, j = hi + 1;
        int v = a[lo];
        while(true){
            while(a[++i] < v) if(i == hi) break;
            while(a[--j] > v) if(j == lo) break;
            if(i >= j) break;
            swap(a,i,j);
        }
        swap(a,lo,j);
        return j;
    }
    
    private static void swap(int[] a, int i, int j){
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
    
}


发表于 2021-03-05 10:25:36 回复(0)
while(line=readline()){
    var arr=line.split('').sort();
    console.log(arr.join(''))
}

发表于 2021-01-25 15:32:09 回复(0)
让用c语言实现是想让用冒泡和数组实现吗?
数组和字符串用法相似,冒泡实现代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string str;
    string temp;
    while(cin>>str)
    {
        for(int i=0;i<str.size()-1;i++)
        {
            for(int j=0;j<str.size()-1-i;j++)
            {
                if(str[j]>str[j+1])
                {
                    temp[0]=str[j];
                    str[j]=str[j+1];
                    str[j+1]=temp[0];
                }
            }
        }
        for(int i=0;i<str.size();i++)
        {
            cout<<str[i];
        }
        cout<<endl;
    }
    return 0;
}

发表于 2020-11-15 13:25:06 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String input = sc.nextLine();
            if ("".equals(input)) {
                continue;
            }
            
            char[] arr = input.toCharArray();
            Arrays.sort(arr);
            
            System.out.println(String.valueOf(arr));
        }
    }
}

发表于 2020-08-31 22:10:32 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String line = scanner.nextLine();
            List<Character> characterList = new ArrayList<>();
            for (int i = 0; i < line.length(); i++) {
                char ch = line.charAt(i);
                characterList.add(ch);
            }
            characterList.sort(Comparator.comparingInt(o -> o));
            StringBuilder stringBuilder = new StringBuilder();
            characterList.forEach(stringBuilder::append);
            System.out.println(stringBuilder.toString());
        }
    }
}
// 方法2
 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String line = scanner.nextLine();
            char[] charArr = line.toCharArray();
            Arrays.sort(charArr);
            System.out.println(String.valueOf(charArr));
        }
    }


编辑于 2020-08-09 16:38:09 回复(0)
while True:
    try:
        str1 = input()
        list1 = []
        for i in str1:
            list1.append(ord(i))
        list1 = sorted(list1)
        res = ''
        for i in list1:
            res+=chr(i)
        print(res)
    except:
        break
发表于 2020-07-19 23:21:27 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main(){
    char str[1000]={0};
    while(EOF != scanf("%s",str)){
        int a[128] = {0};
        int k = 0;
        while(str[k]!='\0') ++a[str[k++]];
        for(int i=0;i < 128;++i)
            if(a[i] != 0)
                for(int j=0;j < a[i];j++)
                    printf("%c",(char)i);
        printf("\n");
        memset(str,0, 1000);
    }
    return 0;
}

3ms / 484k😑

发表于 2020-06-23 12:36:34 回复(0)
#include <iostream>
(720)#include <string>
#include <algorithm>

using namespace std;

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

发表于 2020-03-25 23:26:31 回复(0)
while 1:
    try:
        print("".join(sorted(input(), key=lambda x: ord(x))))
    except:
        break

编辑于 2020-02-28 00:00:27 回复(0)
while True:
  try:
    print("".join(sorted(input())))
  except:
    break

发表于 2020-02-19 10:32:27 回复(0)
#include<iostream>
#include<cstring>
using namespace std;
int main(){
    int asc[128];
    char ch[1025];
    while(cin>>ch){
        for(int i=0;i<62;i++)
            asc[i]=0;
        for(int i=0;i<strlen(ch);i++){
            if(ch[i]<='9'&&ch[i]>='0')
                asc[ch[i]-'0']++;
            else if(ch[i]<='Z'&&ch[i]>='A')
                asc[ch[i]-'A'+10]++;
            else if(ch[i]<='z'&&ch[i]>='a')
                asc[ch[i]-'a'+36]++;
        }
        for(int i=0;i<62;i++){
            if(asc[i]!=0){
                if(0<=i&&i<=9)
                for(int j=0;j<asc[i];j++)
                    cout<<(char)(i+'0');
                if(10<=i&&i<=35)
                for(int j=0;j<asc[i];j++)
                    cout<<(char)(i-10+'A');
                if(36<=i&&i<=61)
                for(int j=0;j<asc[i];j++)
                    cout<<(char)(i-36+'a');
            }
        }
        cout<<endl;
    }
}

发表于 2020-01-06 20:28:14 回复(0)
#include<iostream>
#include<sstream>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
    string str;
    while(cin>>str)
    {
        sort(str.begin(),str.end());
        cout<<str<<endl;
    }
    return 0;
}
使用algorithm库中的sort函数,直接就会排序号,因为需要升序排列,所以可以加最后的判断函数,也可以不加,默认就为升序。但是在sort函数中调用比较函数的时候不需要加括号。
发表于 2019-12-05 18:33:35 回复(0)