1. C语言:一个字符一个字符的读取

(有空再贴出来)

2.Java语言:按行读取,并用正则分割成多个单词,再用MapReduce并行计算单词数 (我使用的是ieda,有些地方跟eclipse有点区别)

  1. /**
  2. * 按流读取文件 (通过read.readLine()获取一行)
  3. * @param path
  4. * @return
  5. * @throws FileNotFoundException
  6. */
  7. public BufferedReader openFile(final String path) throws FileNotFoundException {
  8. BufferedReader reader = new BufferedReader(new FileReader(path));
  9.  
  10. return reader;
  11. }
  1. /**
  2. * 采用Hash计算单词数
  3. * @param line
  4. * @return
  5. */
  6. public void hash(final HashMap<String, Integer> hashMap, final String line) {
  7. // 不能分割b2c,it's这类单词
  8. String[] words = line.split("[^a-z]+");
  9.  
  10. for (String word : words) {
  11. // 去除空格、空行
  12. if (word.length() > 0) {
  13. if (hashMap.containsKey(word) == false) {
  14. hashMap.put(word, 1);
  15. }
  16. }
  17. }
  18. }
  1. /**
  2. * 计算单词个数
  3. * @param hashMap
  4. * @return
  5. */
  6. public Integer computeWordCount(final HashMap<String, Integer> hashMap) {
  7. return hashMap.size();
  8. }

测试用例:

  1. public static void main(String args[]) throws IOException {
  2. String path = Paths.get(PROJECT_ROOT_DIR, "src/main/resources/articles/test.txt").toString();
  3. BufferedReader reader = openFile(path);
  4.  
  5. HashMap<String, Integer> hashMap = new HashMap<>();
  6. String line;
  7. int wordCount;
  8.  
  9. while((line = reader.readLine()) != null) {
  10. hash(hashMap, line);
  11. }
  12.  
  13. wordCount = computeWordCount(hashMap);
  14. System.out.println(wordCount);
  15. }

【算法】计算一篇文章的单词数(C、Java语言实现)的更多相关文章

  1. N个任务掌握java系列之统计一篇文章中单词出现的次数

    问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:valu ...

  2. 一篇文章让你彻底掌握 shell 语言

    一篇文章让你彻底掌握 shell 语言 由于 bash 是 Linux 标准默认的 shell 解释器,可以说 bash 是 shell 编程的基础. 本文主要介绍 bash 的语法,对于 linux ...

  3. 构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

    定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号: sName表示姓名: sSex表示性别: sAge表示年龄: sJava:表示Java课程成 ...

  4. jieba:统计一篇文章中词语数

    jieba官方文档 1.jieba分词的四种模式 精确模式.全模式.搜索引擎模式.paddle模式 精确模式:把文本精确的切分开,不存在冗余单词,适合文本分析: 全模式:把文本中所有可能的词语都扫描出 ...

  5. 一篇文章有若干行,以空行作为输入结束的条件。统计一篇文章中单词the(不管大小写,单词the是由空格隔开的)的个数。

    #include <iostream>using namespace std; int k = 0;int n = 0;int main() { char c; char a[1000]; ...

  6. Python - 统计一篇文章中单词的频率

    def frenquence_statistic(file_name): frequence = {} for line in open(file_name,'r').readlines(): wor ...

  7. R语言算法 ▪ 计算随意输入的两数之间的区域和

    sumfu<-function(a,b,n=){ if(a<b){ for(i in a:b){n=n+i} }else for(i in b:a){n=n+i} return <- ...

  8. 算法笔记_038:特殊回文数(Java)

    目录 1 问题描述 2 解决方案 2.1 80分解法 2.2 网友标答解法   1 问题描述 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...

  9. 一篇文章带你编写10种语言HelloWorld

    0,编程语言排行榜 计算机编程语言众多,世界上大概有600 多种编程语言,但是流行的也就几十种.我们来看下编程语言排行榜,下面介绍两种语言排行榜. Ⅰ TIOBE 指数 该指数每月更新一次,它监控了近 ...

随机推荐

  1. php获取post参数的几种方式

    php获取post参数的几种方式 1.$_POST['paramName'] 只能接收Content-Type: application/x-www-form-urlencoded提交的数据 2.fi ...

  2. RemoveAll 要重写equals方法

    public class User { private String name; private int age; //setter and getter public String getName( ...

  3. JavaScript装逼指南

    如何写JavaScript才能逼格更高呢?怎样才能组织JavaScript才能让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句“原来还可以这样写”呢?下面列出一些在JavaScrip ...

  4. 软件测试学习日志————round 0 An impressed error in my past projects

    在初学各种语言时总会出现各种错误,比如main携程mian.忘了加各种库,打错字等等等等.虽然这些错误后面看来很幼稚,但是有的时候真的会让人印象很深刻. 在初学JavaScript时,我对JavaSc ...

  5. 理解C语言声明的优先级规则

    声明从它的名字开始读取,然后依次按优先级依次读取. 优先级从高到低依次是 声明中被括号括起来的那部分 后缀操作符: 括号()表示这是一个函数 方括号表[]这是一个数组 前缀操作符:星号*表示“指向.. ...

  6. 第五章 Spring3.0 、Hibernate3.3与Struts2的整合 基于Annotation

    Annotation的方式是通过注解的方式把Struts2中的Action.Dao层的实现类.Service层的实现类交由Spring管理,不需要在配置文件中进行配置.但为了方便,事务的管理依然使用的 ...

  7. [LeetCode][Python]Tow Sum

    # -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/two-sum/ Given an array of integers, find ...

  8. libvirt python binding 变成了一个新项目

    http://libvirt.org/git/ $ git clone git://libvirt.org/libvirt-python.git 2013年的事情了. $ git show a7a12 ...

  9. 视频日志之android的总结与思考

    四月份开始学android,并着手做这个项目,腾讯面试实习忙了半个月没有再做最终铩羽而归.做到5月30日,做了一个交差版,停下了差不多一个月,这两天再捡起完善一点. 项目是做一个视频保存和分享的网站, ...

  10. delphi “Invalid floating point operation.”错误的解决方法

    这两天用webbrower写东西,有时候打开SSL加密站点时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上. 导致原因 在Delphi2 ...