import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 对字符集中字符出现的次数进行排序。
*/
public class Test2 {
public static void main(String args[]) {
String str = "12345678hfdjkslahfkj932189oiefsjkar94werfdsf";
Map<Character, KeyValue> map = new HashMap<Character, KeyValue>();
char c;
KeyValue kv = null;
for (int i = 0; i < str.length(); i++) {
c = str.charAt(i);
kv = map.get(c);
if (kv == null) {
kv = new KeyValue();
kv.ch = c;
kv.count = 1;
map.put(c, kv);
} else {
kv.count++;
}
}
List<KeyValue> list = new ArrayList<KeyValue>(map.values());
Collections.sort(list);
for (KeyValue o : list) {
System.out.println(o.ch + "=" + o.count);
}
}
}
class KeyValue implements Comparable {
char ch;
int count;
public int compareTo(Object obj) {
if (obj instanceof KeyValue) {
KeyValue kv = (KeyValue) obj;
return kv.count - this.count;
}
return -1;
}
}
分享到:
相关推荐
FuzzyWuzzy 还提供了搜索排序接口,用于从大量候选集中找到最相似的句子。 在实际应用中,字符串模糊匹配技术广泛应用于搜索引擎、自然语言处理、信息检索等领域。例如,在搜索引擎中,字符串模糊匹配技术可以用于...
75. **strpbrk($haystack, $mask)**: 查找字符串中是否包含特定字符集中的任意一个字符。 76. **strpos($haystack, $needle, $offset)**: 查找字符串首次出现的位置。 77. **strrchr($haystack, $needle)**: 返回...
- PKU3693和SPOJ687题目都是关于找出重复次数最多的连续重复子串,这可能需要遍历整个字符串,维护当前子串及其出现次数的状态。 7. **长度不小于k的公共子串的个数**: - PKU3415要求计算所有长度不小于k的公共...
它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。...
- **计数排序**:统计每个符号出现的次数,据此生成排序后的序列。 - **基于归并的排序算法**: - **归并排序**:不断地将数据划分为更小的子序列,直至每个子序列只有一个元素,再合并子序列。 - **自然排序**...
排序算法是计算机科学中的一项基础内容,它涉及到如何有效地对数据进行排序,以便于存储、检索和操作。根据给定文件的内容,以下是对学习的几种排序算法的详细知识点总结。 1. 冒泡排序(BubbleSort): 冒泡排序是...
- **原理**:计算每个元素出现的次数,然后使用计数信息构建输出数组以获得排序后的结果。 - **应用场景**:适用于元素值范围较小的数据集。例如,在基因组学研究中对短序列进行排序时效果显著。 5. **并行桶排序...
- **文本压缩**:由于BWT能够将相似的字符集中到一起,因此它在数据压缩中表现出色,可以减少重复信息,提高压缩率。 - **字符串搜索**:BWT使得在大量文本中搜索特定模式变得高效,因为相似的模式在BWT字符串中...
它通过统计每个元素出现的次数,然后计算出每个元素的正确位置。时间复杂度为O(n+k),其中k是整数的范围。 9. **桶排序**:桶排序将元素分配到有限数量的桶中,每个桶分别排序,然后组合所有桶的结果。如果数据均匀...
4. **冒泡排序**:描述中提到的冒泡排序可能是指在获取关键字后,对它们按照出现次数进行排序的一种方式。冒泡排序是一种基础的排序算法,虽然效率相对较低,但对于小规模数据排序仍然适用。在易语言中,可以编写...
通过比较字符集中字符与文本中的字符,累加相应的计数。最后,程序输出每个字符及其出现次数。 这个算法的时间复杂度是O(m),其中m是第二个字符串的长度,因为需要遍历整个文本。空间复杂度是O(1),因为仅使用固定...
- 将哈希表中的键值对按照出现次数进行降序排序。 - 输出排序后的前三项。 - **优化技巧:** - 在构建哈希表时,可以利用`std::unordered_map`来提高查找效率。 - 排序时,可以考虑使用优先队列(最大堆)来...
【C#程序(补充完善版)】涉及到的知识点主要集中在几个方面:基本的排序算法、字符串操作以及链表操作。以下是对这些知识点的详细说明: 1. **排序算法**: - **冒泡排序**:冒泡排序是一种简单的排序算法,通过...
对于给定的文章片段(30<单词数量),统计该片段中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。在 图形界面中演示该过程 对于给定的多篇文章构成的文档集中,...
2. 这题要求使用插入排序算法对输入的十个整数进行排序。通过双层`for`循环,外部循环用于遍历数组,内部循环则用于每次将新输入的元素插入到已排序部分的正确位置。这是对排序算法的实践,插入排序是一种简单直观的...
这可能涉及到快速排序、归并排序等高效的排序算法,以及计数排序或哈希表来统计特定数字的出现次数。对于排序数组,可以在O(n)的时间复杂度内完成查找。 4. **软件测试部分**: - 计算器的测试流程和思路:包括...
随后,根据字符出现的概率对所有字符进行排序,并通过合并概率最小的n个字符来逐步构建Huffman树。每一轮合并后,新生成的符号将具有新的概率值,并将这新的符号加入到待合并的字符集中,继续执行合并操作,直至最终...
2. 对每行进行处理,分割单词并检查是否存在于待统计的词集中。 3. 使用`Aword`ADT的`WordCmp`方法对找到的单词进行排序。 4. 将排序后的单词存储到`OrderList`ADT中,同时记录每个单词的出现次数和行号。 5. 输出每...