字符统计次数最多
Posted 猪八戒1.0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符统计次数最多相关的知识,希望对你有一定的参考价值。
https://www.lanqiao.cn/problems/2142/learning/
问题描述
给定一个只包含大写字母的字符出 S, 请你输出其中出现次数最多的字符。
如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。
输入格式
一个只包含大写字母的字等串 S.
输出格式
若干个大写字母,代表答案。
样例输入
BABBACAC
样例输出
AB
评测用例规模与约定
1≤∣S∣≤10的6次方
.
运行限制
最大运行时间:1s
最大运行内存: 512M
HashMap
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
HashMap<Character, Integer> map = new HashMap<>();
String s=sc.next();
for(int i=0;i<s.length();i++)
char c=s.charAt(i);
//nice
map.put(c, map.getOrDefault(c, 0)+1);
//用来存找到的
ArrayList<Character> list = new ArrayList<>();
//初始值最多次数
int max=0;
for(char key:map.keySet())
int x=map.get(key);
if(x>max)
list.clear();
list.add(key);
max=x;
else if(x==max)
list.add(key);
//需要排序 ArrayList没有自动排序功能
Collections.sort(list);
for(char c:list)
System.out.print(c);
由于字母只有26个,不如用数组,HashMap虽然是O(1)但效率肯定不如直接查数组
package lanqiao;
import java.util.ArrayList;
import java.util.Scanner;
public class 字符统计2
static int cnt[]=new int[26];
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
String s=sc.next();
for(int i=0;i<s.length();i++)
char c=s.charAt(i);
cnt[c-'A']++;
//用来存找到的
ArrayList<Integer> list = new ArrayList<>();
int max=0;
for(int i=0;i<26;i++)
if(cnt[i]>max)
list.clear();
max=cnt[i];
list.add(i);
else if(cnt[i]==max)
list.add(i);
for(int i:list)
System.out.print((char)(i+'A'));
以上是关于字符统计次数最多的主要内容,如果未能解决你的问题,请参考以下文章