【发布时间】:2020-07-17 10:05:52
【问题描述】:
我正在尝试编写一个程序来按列表中最不常见的字符对字符串列表进行排序。例如,如果列表为[apple, orange, banana],则列表中的字母频率将为 a - 5、n - 3、p - 2、e - 2、l- 1、o - 1、r - 1、g - 1、 b - 1. 由于 orange 包含最不常见的字母,因此程序将返回 orange,然后是 apple,然后是 banana。
到目前为止,我已经编写了按频率对列表中所有字母进行排序的代码。但我需要应用它来查找哪个字符串包含最不常见的字母。
这是我的代码:
Map<Character, Integer> elemCount = new LinkedHashMap<>();
for (String word : words)
{
for (int i = 0; i < word.length(); i++)
{
if (elemCount.containsKey(word.charAt(i)))
{
elemCount.put(word.charAt(i), elemCount.get(word.charAt(i)) + 1);
}
else
{
elemCount.put(word.charAt(i), 1);
}
}
}
ArrayList<Character> sortedElems = new ArrayList<>();
elemCount.entrySet().stream().sorted(Collections.reverseOrder
(Map.Entry.comparingByValue())).forEach(entry ->
{
for (int i = 1; i <= entry.getValue(); i++)
{
sortedElems.add(entry.getKey());
}
}
);
System.out.println(sortedElems);
【问题讨论】:
-
“最不频繁”是什么意思?频率最低的单词中有多少个字母?字母频率总和?
-
出现频率最低的单词中的字母个数
标签: java string sorting collections