首页 新闻 会员 周边 捐助

有一个字符串入[1,3,,4,7,2,1,1,5,2]输出里面出现次数最多的一个,最少的一个

0
悬赏园豆:40 [待解决问题]

有一个字符串入[1,3,,4,7,2,1,1,5,2]输出里面出现次数最多的一个,最少的一个

 

 

有一个字符串入[1,3,,4,7,2,1,1,5,2]输出里面出现次数最多的一个,最少的一个

I'mITman的主页 I'mITman | 初学一级 | 园豆:6
提问于:2013-06-12 13:23
< >
分享
所有回答(6)
0

提供一个思路,建立两个数组,数组A(初值为-1),数组B(初值为0),数组A存放名字,数组B存放个数,A和B中是相对应的

接下来就遍历你的这个数组,判断一下然后添加各处信息

Sun_LuoFlow | 园豆:161 (初学一级) | 2013-06-12 13:42
0

我觉得直接上hashtable就好了

sciencefans | 园豆:202 (菜鸟二级) | 2013-06-12 15:26
0

不考虑效率问题的话直接用这样一个linq查询就可以了。

    var query = from n in new int[] { 1, 3, 4, 7, 2, 1, 1, 5, 2 }
                group n by n into g
                let i = new { Value = g.Key, Count = g.Count() }
                orderby i.Count descending
                select i.Value;

    Console.WriteLine(query.First());
    Console.WriteLine(query.Last());
天方 | 园豆:5432 (大侠五级) | 2013-06-12 21:45
0
int num = 0;
            Dictionary<stringint> getNum = new Dictionary<stringint>();
            string[] strList = new string[] { "1""3""4""7""2""1""1""5""2" };
            for (int i = 0; i < strList.Length; i++)
            {
                foreach (string str in strList)
                {
                    if (strList[0].Equals(str))
                    {
                        num++;
                    }
                }
                getNum.Add(strList[i], num);
            }

先存入dictionary中 在最其进行排序找出最大,最小的
小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-13 17:06
 Dictionary<stringint> getNum = new Dictionary<stringint>();
            string[] strList = new string[] { "1""3""4""7""2""1""1""5""2" };
            for (int i = 0; i < strList.Length; i++)
            {   
                int num = 0;
                foreach (string str in strList)
                {
                    if (strList[0].Equals(str))
                    {
                        num++;
                    }
                }
                getNum.Add(strList[i], num);
            }
支持(0) 反对(0) 小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-13 17:07
0

好吧!!上面的好像都是C#来回答的,我来一个JAVA的吧

public String[] strings = {"1","3","","4","7","2","1","1","5","2"};
    public void getMore(){
        Map<String,Integer> map = getMap();
        Set<String> set = map.keySet();
        Iterator<String> it =set.iterator();
        String moreKey=null;
        String lowKey = null;
        while(it.hasNext()){
            String key = it.next().toString();
            //得到出现次数最多的key
            if(!map.containsKey(moreKey)){
                moreKey = key;
            }
            if(map.get(key)>map.get(moreKey)){
                moreKey = key;
            }
            //得到出现次数最少的key
            if(!map.containsKey(lowKey)){
                lowKey = key;
            }
            if(map.get(key)<map.get(lowKey)){
                lowKey = key;
            }
        }
        System.out.println("出现次数最多的字符串为:"+moreKey+",次数为:"+map.get(moreKey)+"||出现次数嘴上的字符串为:"+lowKey+",次数为:"+map.get(lowKey));
    }
    
    public Map<String,Integer> getMap(){
        Map<String,Integer> map = new HashMap<String,Integer>(); 
        for(int i=0;i<strings.length;i++){
            int count=1;
            for(int j=i+1;j<strings.length;j++){
                if(strings[i].equals(strings[j])){
                    count++;
                }
            }
            if(!map.containsKey(strings[i])){
                map.put(strings[i], count);
            }
        }
        return map;
    }
Marcos.W | 园豆:230 (菜鸟二级) | 2013-06-19 23:00
0

思路:先将这个数组存放到map中(去除重复的元素),key是数组元素值,value初始值为0;

遍历数组,如果数组元素,在map中的key中存在,则改key对应的value加1;

这样,map中value最大的就是出现最多的。。。

嗨,你的益达~~~ | 园豆:221 (菜鸟二级) | 2013-07-31 15:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册