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

[原创]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针对字符的遍历、判断、运算等相关操作技巧。该算法的主要思路是将给定的字符串进行分类,分别统计它们的个数及其字符分类的有:字母、数字、...

    90.java统计字符次数案例.zip

    90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计字符次数案例.zip90.java统计...

    Java 文本字符统计程序

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

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

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

    Java 文本读写与字符串查找统计

    Java 文本读写与字符串查找统计源程序 实现在文本中查找指定字符并统计出现次数

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

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

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

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

    java统计字符个数

    精简的java代码,用于统计输入的字符的个数

    java实现中文分词simhash算法

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

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

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

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

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

    java经典算法合集

    Description: Java经典算法java经典算法java经典算法java经典算法java经典算法java经典算法java经典算法java经典算法 Tags: Java经典算法 Java经典算法合集是Java编程语言中的一些经典算法的集合,这些算法涵盖了...

    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语言的数据结构与算法的学习资源,特别强调了其原创性,暗示内容可能具有独特性和深度。 数据结构主要包括数组、链表、栈、队列、树、...

    实现并对比三种基本的字符串匹配算法

    首先对三种基本字符串匹配算法进行了详细分析和说明,再编程实现。创新拓展研究了Boyer-Moore算法,进行了分析和编程实现。让四种算法对数据量极大的文本,进行子串的查询处理,并分析算法运行时间效率,并对所有...

    读取txt文件,统计“java”字符串出现的次数

    读取txt文件,统计“java”字符串出现的次数

Global site tag (gtag.js) - Google Analytics