对单词的字符进行排序的问题

问题描述 投票:0回答:1

我有一段时间一直在苦苦挣扎的问题。我给了一个由英文字母的大小字母组成的单词,以对字符进行排序,以便在第一个位置出现在该单词中出现频率最高的字符,如果它们出现相同的次数,它们将按字典顺序排序。如:

输入:说明

输出:iinnssttcoru

到目前为止,我已经写了这篇文章,但是从这里开始,我不知道如何对它们进行排序并正确显示,提示?

public class Main {
public static void main(String[] args) throws IOException {
    String testString = " ";
    BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
    testString = rd.readLine();
    Map<Character, List<Character>> map = new HashMap<>();
    for (int i = 0; i < testString.length(); i++) {
        char someChar = testString.charAt(i);
        if (someChar == ' ') {
            continue;
        }
        char ch = testString.charAt(i);
        List<Character> characters = map.getOrDefault(Character.toLowerCase(ch), new ArrayList<>());
        characters.add(ch);
        map.put(Character.toLowerCase(ch), characters);
    }
    List<Map.Entry<Character, List<Character>>> list = new ArrayList<>(map.entrySet());}
java algorithm sorting bufferedreader bufferedwriter
1个回答
0
投票

您可以添加sortedList来保存字符出现的顺序。但我认为输出应为Iinnssttruco

  public static void main(String[] args) throws IOException {
        String testString = " ";
        List<Character> sortedList = new ArrayList<>();
        BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
        testString = rd.readLine();
        Map<Character, List<Character>> map = new HashMap<>();
        for (int i = 0; i < testString.length(); i++) {
            char someChar = testString.charAt(i);
            if (someChar == ' ') {
                continue;
            }
            char ch = testString.charAt(i);
            List<Character> characters = map.getOrDefault(Character.toLowerCase(ch), new ArrayList<>());
            if (characters.isEmpty()) {
                sortedList.add(Character.toLowerCase(ch));
            }
            characters.add(ch);
            map.put(Character.toLowerCase(ch), characters);
        }

        //Display result
        for (Character keyChar : sortedList) {
            for (Character character : map.get(keyChar)) {
                System.err.print(character);
            }
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.