`
kong0itey
  • 浏览: 305978 次
社区版块
存档分类
最新评论

[原创]java写的字符统计高速算法

    博客分类:
  • java
阅读更多
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;

public class Test {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		test();
	}

	public static void test() throws IOException {
		//读取文件内容到字符串
		String src = "D:\\workspace\\max\\src\\1.txt";// 这是你的文件的绝对径录及文件名
		File f = new File(src);
		BufferedReader br = new BufferedReader(new FileReader(f));
		String s = br.readLine();
		StringBuffer sb = new StringBuffer();
		while ((s = br.readLine()) != null) {
			sb.append(s);
		}
		//查找字符串中字符出现频率
		String text = sb.toString();
		long t1 = System.currentTimeMillis();
		final int STR_LEN = text.length();
		final int CHAR_COUNT = Character.MAX_VALUE + 1;
		final char[] textChars = text.toCharArray();
		int[] times = new int[CHAR_COUNT];
		for (int i = 0; i < STR_LEN; i++) {
			times[textChars[i]]++;
		}
		int t = 0;
		char c = 0;
		for (int i = 0; i < CHAR_COUNT; i++) {
			if (times[i] > t) {
				t = times[i];
				c = (char) i;
			}
		}
		long t2 = System.currentTimeMillis();
		System.out.println("从" + STR_LEN + "个字符中查找完毕,出现次数最多的字符是" + c
				+ ",该字符的ascii编号为" + (int) c + ",它一共出现了" + t + "次.执行本次查找,总共耗时"
				+ ((t2 - t1) / 1000.0) + "秒");
	}

}
分享到:
评论
4 楼 kong0itey 2011-08-15  
woodhaojava 写道
看了老半天,建议楼主在for循环前写注释.或者先交代一下思路,思路往往比代码更重要
这个思路还是不错的,用数组的植存储字符出现的次数,用数组的下标存储字符值;
跟用hashMap的key存储字符,value存储字符次数.原理相似.
理论上,前者速度确实要快些.


哈哈,这个原本是放在这里为了方便以后我自己看的,所以没写太多注释。
3 楼 woodhaojava 2011-08-11  
看了老半天,建议楼主在for循环前写注释.或者先交代一下思路,思路往往比代码更重要
这个思路还是不错的,用数组的植存储字符出现的次数,用数组的下标存储字符值;
跟用hashMap的key存储字符,value存储字符次数.原理相似.
理论上,前者速度确实要快些.
2 楼 kong0itey 2011-08-11  
ydpiaoyun 写道
while 应为 if ,请楼主检查

没有吧,那个是读取文件的,你写成if,那样只能读取到一行内容,只有用while,每读取一次都检查读到的值是否为空(为空证明到了文件尾),这样才行啊
1 楼 ydpiaoyun 2011-08-11  
while 应为 if ,请楼主检查

相关推荐

    java统计字符串出现次数算法--StringCounter(算法源码)

    * 正则统计字符串出现次数 * * @param source * @param regexNew * @return int */ public static int finder(String source, String regexNew) { String regex = "[a-zA-Z]+"; if (regexNew != ...

    java实现的统计字符算法示例

    本文将介绍一个使用Java实现的统计字符算法示例,这个算法能够帮助开发者高效地统计字符串中不同类型的字符数量,例如字母、数字、中文字符等。 首先,要实现这样的统计算法,我们需要定义一个字符串作为分析对象。...

    Java 文本字符统计程序

    一个很好的Java 文本字符统计程序,让你轻松的完成文本字符统计!

    Java检索字符串中是否存在某字符

    标题提到的"Java检索字符串中是否存在某字符",实际上涉及到字符串的查找算法。这里主要讨论的是KMP(Knuth-Morris-Pratt)算法,这是一种高效的字符串匹配算法,适用于在主字符串中查找目标子串是否存在。 KMP算法...

    字符串相似度算法 字符串相似度算法 字符串相似度算法

    字符串相似度算法 字符串相似度算法是一种衡量两个字符串之间相似度的方法,广泛应用于自然语言处理、数据挖掘、机器学习等领域。在本文中,我们将讨论一种常用的字符串相似度算法:Levenshtein Distance。 什么是...

    5统计某个字符串中大小写字母A或a出现的次数java

    在Java编程语言中,统计一个字符串中特定字符的出现次数是一项常见的任务,这对于文本分析、数据处理和算法实现都有很重要的应用。在这个问题中,我们需要编写一个程序来计算字符串中大写"A"和小写"a"的总数。下面将...

    java实现中文分词simhash算法

    总的来说,Java实现的中文分词SimHash算法结合了Sanford分词库的分词功能和SimHash的相似度检测,为中文文本的相似度分析提供了一种高效且准确的方法。在实际应用中,这种技术广泛应用于搜索引擎的去重、推荐系统、...

    Java词频统计算法(使用单词树)

    ### Java词频统计算法(使用单词树) #### 背景与问题 在文本处理领域,词频统计是一项常见的任务。例如,在自然语言处理、搜索引擎优化、文档分类等应用场景中,了解某个词语出现的频率至关重要。传统的词频统计...

    java统计字符串每个字符出现次数

    在Java编程中,统计字符串中每个字符出现的次数是一个常见的任务,特别是在面试或笔试中作为考察点。这个任务可以通过使用HashMap来实现,因为HashMap提供快速的查找和插入操作,适合处理这种计数的问题。以下是一个...

    使用java自带des加密算法实现文件加密和字符串加密

    主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下

    课程设计(字符统计)

    3. **数据结构与算法**:为了有效地统计字符频率,你可能会使用到数组、链表或者哈希表等数据结构。此外,遍历字符串并更新字符计数的过程涉及到算法设计,如线性扫描算法。 4. **文件操作**:如果用户输入的是文件...

    java SM3密码杂凑算法(哈希算法)

    * SM3密码杂凑算法(哈希算法) * SM3杂凑... * 例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。

    Java 实现字符串循环左移算法与解析

    文中详细讲解了如何通过字符串截取与拼接的方法来实现字符串的循环左移,并提供了Java示例代码展示实现细节。对于超出字符串长度的移位操作,通过对移位数取模进行优化,提高执行效率。算法最终达到了时间复杂度为O...

    Java实现字符数组全排列的方法

    在Java编程中,全排列是一个常见的问题,它涉及到算法和数据结构的知识。全排列是指从给定的字符数组中,按照一定的顺序生成所有可能的排列组合。这个问题通常使用回溯法来解决,因为它能够有效地避免重复的排列。...

    java 字符串a-z排序

    在Java编程语言中,对字符串中的字符进行a到z排序是一项常见的操作,特别是在处理文本数据或需要对字母顺序排列的场景。本知识点将详细讲解如何实现这个功能。 首先,我们需要理解字符串在Java中的本质。在Java中,...

    字符串匹配算法C代码实现

    本篇文章将详细探讨四种常见的字符串匹配算法:平凡算法(SimpleSM)、KMP算法(KMPSM)、BM算法(bmSM)以及RK算法(rkSM),并分析它们的基本原理和C代码实现。 1. **平凡算法(SimpleSM)** 平凡算法是最基础的...

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

    kmp算法-基于Java实现kmp字符串搜索算法.zip

    《KMP算法与Java实现详解》 在计算机科学中,字符串搜索算法是处理文本和数据的重要工具,其中KMP(Knuth-Morris-Pratt)算法因其高效性和实用性而备受青睐。KMP算法是由Donald Knuth、Vaughan Pratt和James H. ...

    Java版本的数据结构和算法(Linux社区版)绝对原创

    这个“Java版本的数据结构和算法(Linux社区版)”压缩包显然是一个专注于Java语言的数据结构与算法的学习资源,特别强调了其原创性,暗示内容可能具有独特性和深度。 数据结构主要包括数组、链表、栈、队列、树、...

Global site tag (gtag.js) - Google Analytics