[华为机试] 找字符串中出现次数最多的字符
题目:给定一个长度不限的字符串,请找出该字符串中出现次数最多的那个字符,并打印出该字符及其出现次数;如果多的字符的出现次数相同,只打印首个字符;输出字符的大小写格式要与输入保持一致,大小写不敏感模式下,输出字符的大小写格式与该字符首次出现时的大小写格式一致。实现时无需考虑非法输入。
代码:
import java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; public class MaxCountChar { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); boolean caseSensitive = scanner.nextBoolean(); sort(s.toCharArray(),caseSensitive); scanner.close(); } public static void sort(char[] cs, boolean caseSensitive){ Map<Character,Integer> map = new LinkedHashMap<Character,Integer>(); if(caseSensitive){ for(Character c : cs){ if(map.get(c) != null){ map.put(c, map.get(c)+1); }else{ map.put(c, 1); } } }else{ for(Character c : cs){ boolean isUpperCase = Character.isUpperCase(c); Character anotherChar = null; if(isUpperCase){ anotherChar = Character.toLowerCase(c); }else{ anotherChar = Character.toUpperCase(c); } if(map.get(c) != null){ map.put(c, map.get(c)+1); }else if(map.get(anotherChar) != null){//当前字符是大写字母,小写字母存在 map.put(anotherChar, map.get(anotherChar)+1); }else{ map.put(c, 1); } } } // 寻找最大个数 int maxValue = 0; for(int value : map.values()){ maxValue = maxValue > value ? maxValue : value; } //找到第一个符合最大个数的字符 Character maxChar = null; for(Character c : map.keySet()){ if(map.get(c) == maxValue){ maxChar = c; break; } } //打印 if(maxChar != null){ System.out.println(maxChar + " " + maxValue); } } }
本文来自博客园,作者:君子如珩~,转载请注明原文链接:https://www.cnblogs.com/shulipeng/p/9704013.html

浙公网安备 33010602011771号