题解 | 小红的双生串
小红的双生串
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; } }