字符统计次数最多

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'));
		
	

以上是关于字符统计次数最多的主要内容,如果未能解决你的问题,请参考以下文章

字母统计

java一个字符串中出现次数最多的字符以及次数

字母统计 思想值得学习

Java获取字符串中字母出现的个数

python输入小写字符串,输出字符串中出现字母最多的字母及其出现次数,如果有多

闲谈如何统计字符串中出现最多的字母与个数