首页 > 试题广场 >

字母数字混合排序

[编程题]字母数字混合排序
  • 热度指数:2623 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一串字符,包含数字[0-9]和小写字母[a-z],要求按数字从小到大、字母从a到z排序,并且所有数字排在字母后面

输入描述:
一串字符


输出描述:
按规则排序的一串字符
示例1

输入

a31bz

输出

abz13
import java.util.Scanner;
public class Main {
    /*1.将字符串转化成字符数组
      2.首先将数字与字母划分开
      3.采用冒泡排序的思想(注意将数字与字母分开冒泡)
      
    注意:1.数字从小到大,字母从a到z
         2.所有数字排在字母后面
    */
    //程序完成一部分就测试一部分
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string = scanner.next();
        char[] array = new char[string.length()];
        int i=0;
        //将字符串转化到字符数组中
        while(i < string.length()) {
            array[i] = string.charAt(i++);
        }
        //将数字放在字符串后面
        for(int j = array.length-1;j >= 0;j--){
            if(array[j] >= '0' && array[j] <= '9') {
                for(int k = j ;k < array.length-1; k++) {
                    char temp = array[k];
                    array[k] = array[k+1];
                    array[k+1] = temp;
                }
            }
        }
        //for(char ch:array) System.out.print(ch);
        //找到字母与数字分界线(下标从0开始)(下标表示数字)
        int position = 0;
        while(array[position] >= 'a' && array[position] <= 'z') position++;
        //分界线前后分别冒泡排序
        for(int j = position - 1; j > 0 ;j--) {//处理字母
            for(int k = 0 ; k < j; k++) {
                if(array[k] > array[k + 1]) {
                    char temp = array[k];
                    array[k] = array[k+1];
                    array[k+1] = temp;
                }
            }
        }
        for(int j = array.length -1; j > position ;j--) {//处理数字
            for(int k = position ; k < j; k++) {
                if(array[k] > array[k + 1]) {
                    char temp = array[k];
                    array[k] = array[k+1];
                    array[k+1] = temp;
                }
            }
        }
        for(char ch:array) System.out.print(ch);
        
    }
}
发表于 2022-04-23 14:35:54 回复(0)
import java.util.*;
  
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.next();
            System.out.println(helper(str));
        }
    }
    
    public static String helper(String str){
        StringBuilder sb1=new StringBuilder();
        StringBuilder sb2=new StringBuilder();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
                sb1.append(str.charAt(i));
            }else if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
                sb2.append(str.charAt(i));
            }
        }
        char[]cs1=sb1.toString().toCharArray();
        char[]cs2=sb2.toString().toCharArray();
        Arrays.sort(cs1);
        Arrays.sort(cs2);
        StringBuilder sb=new StringBuilder();
        for(char c:cs1)sb.append(c);
        for(char c:cs2)sb.append(c);
        return sb.toString();
    }
} 

发表于 2020-08-30 23:22:22 回复(0)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
char[] carr=sc.nextLine().toCharArray();



        int i,j;
        char temp;
        
        for(i=0;i<carr.length;i++) {
            for(j=0;j<carr.length-i-1;j++) {
                
                if(carr[j]>carr[j+1]) {
                    
                    temp=carr[j];
                    carr[j]=carr[j+1];
                    carr[j+1]=temp;
                    
                    
                }
                
                
                
                
                
            }
            
            
            
        }
















        //System.out.println(carr);
        int p = 0;
        while(p<carr.length) {
            
            
            if(carr[p]>='a') {
                
                
                System.out.print(carr[p]);    
                
            }
            
            
            p++;
            
        }
        
        
         p = 0;
            while(p<carr.length) {
                
                
                if(carr[p]<='9') {
                    
                    
                    System.out.print(carr[p]);    
                    
                }
                
                
                p++;
                
            }

    }
}
发表于 2020-06-05 21:31:56 回复(0)
import java.util.Arrays;
import java.util.Scanner;

/**
* @author wylu
*/
public class Main {
    public static void main(String[] args) {

        String str = new Scanner(System.in).nextLine();
        char[] array = str.toCharArray();
        
        Arrays.sort(array);
        //13abz
        String left="";
        String right="";
        
        for (char c : array) {
            if(c>='0'&&c<='9'){
                right=right+c;
            }
            
            if(c>='a'&&c<='z'){
                left=left+c;
            }
        }
        
        System.out.println(left+right);
    }
}
发表于 2019-03-02 10:05:35 回复(0)