题解 | 小红的双生串

小红的双生串

https://www.nowcoder.com/practice/099d6681234d4e3e95c0e0ade31929da

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        System.out.print(getDouble(s));
    }

    private static int getDouble(String s) {
        HashMap<Character, Integer> frontMap = new HashMap<>();
        HashMap<Character, Integer> endMap = new HashMap<>();
        for (int i = 0; i < s.length() / 2; i++) {
            char ch = s.charAt(i);
            frontMap.put(ch, frontMap.getOrDefault(ch, 0) + 1);
        }
        for (int i = s.length() / 2; i < s.length(); i++) {
            char ch = s.charAt(i);
            endMap.put(ch, endMap.getOrDefault(ch, 0) + 1);
        }
        if (frontMap.size() == 1 && endMap.size() == 1) {
            return 0;
        }
        int count = 0;
        Iterator<Map.Entry<Character, Integer>> iterator =
            frontMap.entrySet().iterator();
        int max = 0;
        while (iterator.hasNext()) {
            Map.Entry<Character, Integer> entry = iterator.next();
            max = Math.max(max, entry.getValue());
        }
        count += s.length() / 2 - max;
        max = 0;
        Iterator<Map.Entry<Character, Integer>> iterator1 =
            endMap.entrySet().iterator();
        while (iterator1.hasNext()) {
            Map.Entry<Character, Integer> entry = iterator1.next();
            max = Math.max(max, entry.getValue());
        }
        count += s.length() / 2 - max;
        return count;
    }
}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务