前端侠的gravatar头像
前端侠 2014-09-20 15:12:14

java程序编写实现任意20个字母,输出出现次数最多的字母和次数的算法

java程序编写实现任意20个字母,输出出现次数最多的字母和次数的算法

所有回答列表(2)
watfgzs的gravatar头像
watfgzs  LV21 2014年9月21日
package a;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 任意20个字母 输出出现次数最多的字母和次数
 * @author Administrator
 */
public class Tongjizifu {
	public static void main(String[] args) {
		HashMap<Character, Integer> map = new HashMap<Character, Integer>();

		char[] zs = { 'c', 'b', 'c', 'd', 'a', 'a', '1', 'b', 'b', 'c' };

		for (int i = 0; i < zs.length; i++) {
			// 必须是字母才放到集合中作为key
			if (Character.isLetter(zs[i])) {
				// 集合中已经存在就在原来基础上加1
				if (map.containsKey(zs[i])) {
					map.put(zs[i], (map.get(zs[i]) + 1));
				} else {// 集合中不存就直接放进去个1
					map.put(zs[i], 1);
				}
			}
		}
		//map中的值放到list集合中
		List<Map.Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character, Integer>>(map.entrySet());
		//比较器排序
		Collections.sort(list, new EntryComparator());
		//输出最后的结果
		System.out.println(list.toString());
	}
	static class EntryComparator implements Comparator<Map.Entry<Character, Integer>> {
		 public EntryComparator() {}
		 @Override
		 public int compare(Map.Entry<Character, Integer> o1,Map.Entry<Character, Integer> o2) {
//			 return o1.getValue().intValue() - o2.getValue().intValue(); //升序排列
		  return o2.getValue().intValue() -o1.getValue().intValue();//降序排列
		 }
	}
}

 

Edson188的gravatar头像
Edson188  LV22 2014年9月22日

呵呵,这个用java到是很简单,你直接用了java中的函数,如果用c你改如何写?这个就是和网络上js中找元素一个意思,把元素放在数组里面,排个序,如:1 3 5 7 5 9 8 3 11  先得到 1 3 5 7 8 9 11 两个匹配 就可以得到某个数据重复叠加,还可以得到每个元素的下坐标,这样还可以剔除重复的,还可以按照下坐标把元素分配,写js的人都知道,简单算法。

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友