一,不使用容器版本
思路:首先将字符串转换成字符数组,然后建立两个数组,一个属于26字符表,一个用于保存表中各个字符出现的次数,最后遍历该数组,找到该数组中最大的数与位置即为出现最多的字符与出现次数;
import java.util.Scanner;
//获取字符串中出现次数最多的字符
public class Mian {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char[] x=str.toCharArray();
char[] m= {'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
int[] n=new int[26];
for(int i=0;i<x.length;i++)
{
for(int j=0;j<26;j++)
{
if(x[i]==m[j]) n[j]++;
}
}
int max=0,temp=0;
for(int i=0;i<26;i++)
if(n[i]>max) {max=n[i];temp=i;}
System.out.println(m[temp]+""+max);
}
二.使用容器
思路:使用map,先将字符串转换为字符数组,然后将字符数组加到map中,当存在相同的字符时将对应的value++,最后获取map中Value的值最大值
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
//获取字符串中出现次数最多的字符
public class Mian {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char[] ch=str.toCharArray();
//保存到map
Map<Character,Integer> map=PutInMap(ch);
getMax(map);
}
//加入字符串到map中
public static Map<Character,Integer> PutInMap(char[] ch)
{
Map<Character,Integer> map=new HashMap<Character,Integer>();
for(int i=0;i<ch.length;i++)
{
if(map.get(ch[i])!=null)
map.put(ch[i],map.get(ch[i])+1);
else
map.put(ch[i], 1);
}
return map;
}
//获取Map中的value的Max
public static void getMax(Map<Character,Integer> map)
{
Iterator it=null;//迭代器遍历map
Set<Character> ch=map.keySet();
it=ch.iterator();
char maxCh='a';
int maxVa=0;
while(it.hasNext())
{
Character c=(Character)it.next();
if(maxVa<map.get(c))
{
maxVa=map.get(c);
maxCh=c;
}
}
System.out.println(maxCh+":"+maxVa);
}
}