1.说在前面
这是蓝桥杯官网的一道题目。这种类型的题目,见过很多次,写倒是第一次。
2.题目描述
3.代码
Scanner sc = new Scanner(System.in);
String s = sc.next();
int size = s.length();
if (size == 0){
System.out.println("");
System.out.println(0);
return;
}
HashMap<Character,Integer> map = new HashMap<>();
for (int i = 0; i < size; i++){
char ch = s.charAt(i);
if (map.containsKey(ch)){
int val = map.get(ch)+1;
map.replace(ch,val);
}else{
map.put(ch,1);
}
}
List<Character>list = new ArrayList<>();
int maxval = 0;
char ch = ' ';
for (int i = 0; i < size;i++){
int val1 = map.get(s.charAt(i));
if (val1 > maxval){
maxval = val1;
ch = s.charAt(i);
}
}
for (int i = 0; i < size; i++){
int val1 = map.get(s.charAt(i));
if (val1 == maxval){
list.add(s.charAt(i));
}
}
if (list.size() != 0){
for (int i = 0; i < list.size();i++){
char tmp = list.get(i);
if (ch > tmp){
ch = tmp;
}
}
}
System.out.println(ch);
System.out.println(maxval);
怎么说呢,看了别人的题解。感觉自己想复杂了很多。尤其是在最大值重复的情况下。用list来装入相应的key再去遍历。一定要多多借鉴优秀的写法。
|