首页 > 解决方案 > 重新排列字符串排列的算法。我该如何解决?

问题描述

这是一个字符串算法问题,但我不知道如何解决。请尝试松开一次。

问题

这是通过重新排列输入字符串来输出可显示字符串的问题。(即打印给定字符排列的问题)

例如,在 ab 字符串的情况下,有两个可能的字符:ab 和 ba。

输入一个字符串,该字符串中可以输入的字符为数字、大小写字母,同一个字符可以有多个字符。(但是,在输入字符串时,构成字符串(L)的字符数最多为10个(1≤L≤10))。

输出所有可以重新排列和显示的字符串,打印时排序的标准是字母和数字的字母顺序,但英文大写字母优先于英文小写字母,字母优先数字。

输入字符串时,我正在考虑检查大写/小写字母和数字的地方。检查方法必须以 ASCII 码进行。

在输出的地方,在进行重新排列时,需要按字母顺序和数字顺序进行排序,但是我不知道如何用什么样的排序方法来编码这种排序方法。

小写字母字符必须优先,字母字符必须优先于数字。大写英文字母>小写英文字母>数字

我可耻的代码

package example_1;

import java.util.Scanner;

public class example1 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        for(int i =0; i < str.length(); i++) {

            char check = str.charAt(i);
            int iCheck = (int)check;

            boolean strLengthCnk =  1 <= str.length() && str.length() <= 10;
            boolean engSleCnk = 65 <= iCheck && iCheck <= 90;
            boolean engCplCnk = 97 <= iCheck && iCheck <= 122;
            boolean numCnk = 48 <= iCheck && iCheck <= 57;

            if(!strLengthCnk) {
                System.out.println("Out of range of string.");
                return;
            } else if(!(engSleCnk && engSleCnk)) {
                System.out.println("Please enter a english");
            } else if(!numCnk) {
                System.out.println("Please enter a number.");
            }
        }

    }
}

在此处输入图像描述

标签: algorithm

解决方案


推荐阅读