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

[原创]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 ,请楼主检查

相关推荐

Global site tag (gtag.js) - Google Analytics