将数组中的字符按出现次数多少排序输出
2017-04-01 12:32
246 查看
原题
一个有N个元素的集合,其中有相同元素。
需要得到按重复元素多少排序的新集合。
输入 {"a","b","c","c","a","c"}
输出 {"c","a","b"}
求算法
[java] view
plain copy
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class ArrSort {
public static void main(String[] args) {
String[] strArr = {"a","b","c","c","a","c"};
System.out.println(arraySort(strArr));
}
public static String arraySort(String[] arr) {
// 定义map,存放数组中的字符及出现次数
Map<String, Integer> map = new HashMap<String, Integer>();
// 遍历数组,将字符及出现次数存放map中
for (String str : arr) {
Integer count = map.get(str);
if (null != count) {
map.put(str, count + 1);
} else {
map.put(str, 1);
}
}
// 定义list,存放map中的entry
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
list.addAll(map.entrySet());
// 对list中的entry,按照value值进行降序排列
Collections.sort(list, new Comparator<Entry<String, Integer>>(){
public int compare(Entry<String, Integer> arg0, Entry<String, Integer> arg1) {
return arg1.getValue().compareTo(arg0.getValue());
}
});
// 定义StringBuffer,存放返回的字符串
StringBuffer retStr = new StringBuffer();
for (Entry<String, Integer> entry : list) {
retStr.append(entry.getKey()).append(",");
}
// 将字符串组装为需要的格式返回
return "{" + retStr.delete(retStr.length()-1, retStr.length()).toString() + "}";
}
}
一个有N个元素的集合,其中有相同元素。
需要得到按重复元素多少排序的新集合。
输入 {"a","b","c","c","a","c"}
输出 {"c","a","b"}
求算法
[java] view
plain copy
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class ArrSort {
public static void main(String[] args) {
String[] strArr = {"a","b","c","c","a","c"};
System.out.println(arraySort(strArr));
}
public static String arraySort(String[] arr) {
// 定义map,存放数组中的字符及出现次数
Map<String, Integer> map = new HashMap<String, Integer>();
// 遍历数组,将字符及出现次数存放map中
for (String str : arr) {
Integer count = map.get(str);
if (null != count) {
map.put(str, count + 1);
} else {
map.put(str, 1);
}
}
// 定义list,存放map中的entry
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
list.addAll(map.entrySet());
// 对list中的entry,按照value值进行降序排列
Collections.sort(list, new Comparator<Entry<String, Integer>>(){
public int compare(Entry<String, Integer> arg0, Entry<String, Integer> arg1) {
return arg1.getValue().compareTo(arg0.getValue());
}
});
// 定义StringBuffer,存放返回的字符串
StringBuffer retStr = new StringBuffer();
for (Entry<String, Integer> entry : list) {
retStr.append(entry.getKey()).append(",");
}
// 将字符串组装为需要的格式返回
return "{" + retStr.delete(retStr.length()-1, retStr.length()).toString() + "}";
}
}
相关文章推荐
- 将数组中的字符按出现次数多少排序输出
- 在一个排序数组中,输出给定数字出现的次数
- 统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- 统计一个数字在排序数组中出现的次数。 数组是排序的,只需要找到第一个K和最后一个K就可以知道有多少个,
- 编写一个js函数求一个字符串数组按字符串中各字母出现次数多少的重新排序
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)
- 统计字符串”abadcdffbaeba”中每个字符出现了多少次,按次数排序并输出
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)
- 一个一维整形数组,若干个数字,统计数组中不同的数字出现的次数,并按照出现频率从小到大排序输出,相同频率按数字大小排序输出
- 输入一个数组,对数组进行排序,并输出该数组中重复元素出现的次数
- 数字在排序数组中出现的次数——离线查询
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 简单题练习——数字在排序数组中出现的次数
- 消除原理____假设数组中有一个数字出现的次数超过了数组长度的一半,试编程找出这个数字(qosrt 快速排序 哈希)
- 在排序数组中,找出给定数字的出现次数.比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 在排序数组中,找出给定数字的出现次数
- 【100题】第六十一题~第六十五题(数组中只出现一次的数、链表公共点、删除字串特定字符、寻找丑数、输出从1到最大的N 位数)
- 统计一个数字在排序数组中出现的次数
- 1486. 统计数字(先排序,再遍历数组统计出现次数)