当前位置: 代码迷 >> Eclipse >> java编程兑现字符串中有多个字符出现次数最多的情况
  详细解决方案

java编程兑现字符串中有多个字符出现次数最多的情况

热度:12   发布时间:2016-04-23 01:31:22.0
java编程实现字符串中有多个字符出现次数最多的情况
编程,随机生成一组字符串,求该字符串中出现次数最多的字符,以及输出该字符和出现的次数。注意解决有多个字符出现次数最多的情况。
我写出来了,但是不完美,输出有多个情况的时候老是会重复出现相同的.
以下是我的代码,求高手改进
import java.util.Random;

public class string {

/**
 * @param args
 */
public static void main(String[] args) {
String a=getRandomString(40);
System.out.println("随机生成的字符串为:");
System.out.print(a);
a.trim();
int i=0;
int count[]=new int[65535];
for(i=0;i<65535;i++)
count[i]=0;
for(i=0;i<a.length();i++) 
count[a.charAt(i)]++;
int max=count[a.charAt(0)];
char str = a.charAt(0);
for(int j = 0; j < a.length(); j ++)  
{  if(max< count[a.charAt(j)])  
    {  
        max=count[a.charAt(j)];  
        str =a.charAt(j);  
    }  
}
System.out.println();
System.out.println("出现次数最多的字符:" + str + " 出现次数:" + max);  
for(int j = 0; j < a.length(); j ++)  
{  if(max== count[a.charAt(j)] && str !=a.charAt(j))  
    {  
        max=count[a.charAt(j)];  
       str =a.charAt(j);  
       System.out.println("出现次数最多的字符:" + str+ " 出现次数:" + max); continue;
    }  
}
 
}
public static String getRandomString(int length)
{
String str="abcdefghigklmnopkrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
int len=str.length();
for(int i=0;i<length;i++)
{
 int number=random.nextInt(len);
 sb.append(str.charAt(number));
}
return sb.toString();
   }
}

运行结果:
java 编程 random string

------解决方案--------------------
引用:
引用:在你的程序中加入集合的概念,你应该是遍历输出的,只记录了一个次数而已。
如果用一个map来记录key(字符),value(次数),然后在输出就不会出现这样的情况了。
具体怎么用map?


Map<Stirng,Integer> map=new HashMap<>();
读到一个字符
如果不存在,则
map.put("字符","次数");
如果存在,则次数+1
------解决方案--------------------
不用集合的话,也可以改一下这部分代码:

        int max=count[a.charAt(0)];
        char str = a.charAt(0);
        for(int j = 0; j < a.length(); j++)
        {
            if(max< count[a.charAt(j)])
            {  
                max=count[a.charAt(j)];  
  相关解决方案