【算法】计算一篇文章的单词数(C、Java语言实现)
1. C语言:一个字符一个字符的读取
(有空再贴出来)
2.Java语言:按行读取,并用正则分割成多个单词,再用MapReduce并行计算单词数 (我使用的是ieda,有些地方跟eclipse有点区别)
/**
* 按流读取文件 (通过read.readLine()获取一行)
* @param path
* @return
* @throws FileNotFoundException
*/
public BufferedReader openFile(final String path) throws FileNotFoundException {
BufferedReader reader = new BufferedReader(new FileReader(path)); return reader;
}
/**
* 采用Hash计算单词数
* @param line
* @return
*/
public void hash(final HashMap<String, Integer> hashMap, final String line) {
// 不能分割b2c,it's这类单词
String[] words = line.split("[^a-z]+"); for (String word : words) {
// 去除空格、空行
if (word.length() > 0) {
if (hashMap.containsKey(word) == false) {
hashMap.put(word, 1);
}
}
}
}
/**
* 计算单词个数
* @param hashMap
* @return
*/
public Integer computeWordCount(final HashMap<String, Integer> hashMap) {
return hashMap.size();
}
测试用例:
public static void main(String args[]) throws IOException {
String path = Paths.get(PROJECT_ROOT_DIR, "src/main/resources/articles/test.txt").toString();
BufferedReader reader = openFile(path); HashMap<String, Integer> hashMap = new HashMap<>();
String line;
int wordCount; while((line = reader.readLine()) != null) {
hash(hashMap, line);
} wordCount = computeWordCount(hashMap);
System.out.println(wordCount);
}
【算法】计算一篇文章的单词数(C、Java语言实现)的更多相关文章
- N个任务掌握java系列之统计一篇文章中单词出现的次数
问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:valu ...
- 一篇文章让你彻底掌握 shell 语言
一篇文章让你彻底掌握 shell 语言 由于 bash 是 Linux 标准默认的 shell 解释器,可以说 bash 是 shell 编程的基础. 本文主要介绍 bash 的语法,对于 linux ...
- 构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号: sName表示姓名: sSex表示性别: sAge表示年龄: sJava:表示Java课程成 ...
- jieba:统计一篇文章中词语数
jieba官方文档 1.jieba分词的四种模式 精确模式.全模式.搜索引擎模式.paddle模式 精确模式:把文本精确的切分开,不存在冗余单词,适合文本分析: 全模式:把文本中所有可能的词语都扫描出 ...
- 一篇文章有若干行,以空行作为输入结束的条件。统计一篇文章中单词the(不管大小写,单词the是由空格隔开的)的个数。
#include <iostream>using namespace std; int k = 0;int n = 0;int main() { char c; char a[1000]; ...
- Python - 统计一篇文章中单词的频率
def frenquence_statistic(file_name): frequence = {} for line in open(file_name,'r').readlines(): wor ...
- 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 <- ...
- 算法笔记_038:特殊回文数(Java)
目录 1 问题描述 2 解决方案 2.1 80分解法 2.2 网友标答解法 1 问题描述 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...
- 一篇文章带你编写10种语言HelloWorld
0,编程语言排行榜 计算机编程语言众多,世界上大概有600 多种编程语言,但是流行的也就几十种.我们来看下编程语言排行榜,下面介绍两种语言排行榜. Ⅰ TIOBE 指数 该指数每月更新一次,它监控了近 ...
随机推荐
- w3school教程整理
原文链接:http://www.flygon.net/w3school 原文链接:https://github.com/wizardforcel/w3school w3school教程整理 离线版大部 ...
- 最大稳定极值区域(MSER)检测
http://blog.csdn.net/zizi7/article/details/50379973 http://www.cnblogs.com/dawnminghuang/p/3779552.h ...
- CRM后期修改实体,新增货币类型字段 需要注意的问题
货币类型字段新增 需要处理历史数据 否则编辑会报错 提示如果货币字段中存在值,则需要指定币种,请选择币种,然后重试 编辑时货币字段不显示¥符号.新增正常.第一次编辑提示错误保存后再编辑也正常.不是JS ...
- iOS-NSAttributedString自定义文字变色
1.使用注意: 1.给UILabel设置attributedText了会导致给UILabel中text,font,textColor,shadowColor,shadowOffset,textAlig ...
- C++_关键字
const static extern 限制-对象隐式类型转换
- C++ Builder平台使用Indy9开发自动FTP程序01
Indy9与CB自带的Indy8不同处还是挺多的.首先就是图标变漂亮了,其次很多Method都重写了.它主要是依据Delph里的函数,力求与之相通.不同点在本系列的后续章节中会一一介绍. 在写ftp代 ...
- Qt 之 show,hide,setVisible,setHidden,close 等小结
0QObject::deleteLater()delete obj;析构对象1QWidget::setVisible(bool)使得Widget可见或不可见2QWidget::setHidden(bo ...
- 网站linux.linuxidc.com有很多好资料
免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 有一些介绍:www.linuxidc.com/download
- Nginx+PostgreSQL+Django+UWSGI搭建
最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx.常见的 django webapp 部署方式采用FCGI 或 WSGI ...
- QT中进度条的使用
在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 //补充:下面两句 ...