码迷,mamicode.com
首页 > 编程语言 > 详细

最大出现次数统计的关键算法

时间:2020-03-19 17:49:32      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:数组   public   split()   ash   system   contain   用户   使用   转换   


编写一个程序,对用户输入的任意一组字符如{3,1,4,7,2,1,1,2,2},输出其中出现次数最多的字符,并显示其出现次数。如果有多个字符出现次数均为最大且相等,则输出最先出现的那个字符和它出现的次数。例如,上面输入的字符集合中,“1”和“2”都出现了3次,均为最大出现次数,因为“1”先出现,则输出字符“1”和它出现的次数3次。

注意:使用分支、循环结构语句实现。

package seven;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
//3,1,4,7,2,1,1,2,2
public class one {
    public static void main(String[] args) {
        System.out.print("输入一组字符串:");
        Scanner s = new Scanner(System.in);
        String n = s.nextLine();

        int[] array = new int[n.length()];

        for (int i = 0; i < n.length(); i++) {
            char sig = n.charAt(i);//将输入的字符串拆分单个字符
            int num = Integer.parseInt(sig+"");
            array[i] = num;
        }
        System.out.println(  getMostInteger( array ) );
        s.close();
    }

    public static String getMostInteger( int[] arrayMath ){
        //key保存出现过的数字,value保存形式为 下标_出现次数长度的字符。
        Map<Integer,String> m = new HashMap<>();

        int max = 1;//保存最大出现的次数
        int minIndex = 0;//保存最大数的下标


        for( int i = 0 ; i < arrayMath.length ; i ++ ){
            if( m.containsKey( arrayMath[i] ) ){       //containsKey判断是否存在该键(arrayMath[i])
                m.put( arrayMath[i] , m.get( arrayMath[i] ) + 1 );
                String[] s = m.get(arrayMath[i]).split("_");//split();是将指定字符串按某指定的分隔符进行拆分,拆分将会形成一个字符串的数组并返回。//将索引和出现次数分离
                int length = s[1].length();//获取出现次数
                if( length > max ){
                    max = length;
                    minIndex = Integer.parseInt(s[0]);//把()里的内容转换成整数

                }else if( length == max ){
                    if( Integer.parseInt( s[0] ) < minIndex ){
                        minIndex = Integer.parseInt( s[0] );
                    }
                }
            }else {
                m.put( arrayMath[i] , i + "_" + 1 );
            }
        }
        String result = "出现次数最多的是" + arrayMath[minIndex] + "出现的次数为" + max;
        return result;
    }
}

  

最大出现次数统计的关键算法

标签:数组   public   split()   ash   system   contain   用户   使用   转换   

原文地址:https://www.cnblogs.com/chenjiajiale/p/12525775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!