设计相应的数据结构和算法,尽量高效的统计一片英文文章(总单词数目)里出现的所有英文单词, * 按照在文章中首次出现的顺序打印输出该单词和它的出现次数。

统计一篇英文文章中所有的单词以及出现的次数 这是CC视频的最后一道面试题,当时纯手写写的还不错,不过在匹配英文单词的时候大小写的情况没有统一([a-zA-Z]和toLowerCase()),回来之后重新写了。 阅读详情
package com.hao.test;

import java.util.HashMap;

/**
 *
 * @author zhanghaohao089
 * @date 2017/8/16
 */

public class QueryEnglishWord {
    private HashMap<String, Integer> hashMap = new HashMap<>();
    private HashMap<Integer, Word> hashWord = new HashMap<>();
    private int count = 0;

    public void insert(String content) {
        String[] array = content.split(" ");
        String name;
        for (int i = 0; i<array.length; i++) {
            name = array[i].trim();
            if (name.length() > 0 ) {
                if (name.indexOf("...") > -1) {
                    name = name.replace("...", "");
                }

                if (name.indexOf(".") > -1) {
                    name = name.replace(".", "");
                }

                for (int j = 0; j < 10; j++) {
                    if (name.indexOf(""+j) > -1) {
                        name = "";
                        break;
                    }
                }
            }
            if (name.length() > 0) {
                if (hashMap.get(name) != null) {
                    int index = hashMap.get(name);
                    Word word = hashWord.get(index);
                    word.setCount(word.getCount() + 1);
                    hashWord.put(index, word);
                } else {
                    hashMap.put(name, ++count);
                    Word word = new Word();
                    word.setName(name);
                    word.setCount(1);
                    hashWord.put(count, word);
                }
            }
        }
    }

    public void println() {
        for (int i = 1; i<= count; i++) {
            System.out.println("单词为---" + hashWord.get(i).getName() + "   出现的次数---" + hashWord.get(i).getCount());

        }
    }
}
package com.hao.test;

/**
 * description
 *
 * @author zhanghaohao089
 * @date 2017/8/16
 */

public class Word {
    private String name;
    private int count;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

node:
1、先判断…符号再判断.符号

至于为什么要用hashMap来储存,因为hashMap在已知条件的情况下,存取极快,修改快,没有删除操作

数据结构 优点 缺点
数组 插入快 查找慢、删除慢、大小固定
有序数组 查找快 插入慢、删除慢、大小固定
栈 后进先出 存取其他项很慢
队列 先进先出 存取其他项很慢
链表 插入、删除快 查找慢
二叉树 查找、插入、删除快 算法复杂(删除算法)
红黑树 查找、插入、删除快 算法复杂
hash表 存取极快(已知关键字)、插入快 删除慢、不知关键字时存取很慢、对存储空间使用不充分
堆 插入快、删除快、对大数据项存取快 对其他数据项存取慢
图 依据现实世界建模 算法有些复杂
AVL树 查找、插入、删除快 算法复杂

移动端单词查找与变位词求解器:前端算法与PWA优化实践 在现代Web开发中,移动端体验与算法效率往往决定一个工具类应用的成败。从字母频率计数到字典索引构建,前端算法设计能显著提升搜索性能;而PWA离线缓存与Service Worker技术,则让应用在弱网环境下依然可用。本文以单词游戏和英语学习场景为切入点,解析如何用纯JavaScript实现一个高性能的Anagram Solver,涵盖移动端适配(如dvh单位、触摸优化)、字典数据组织及搜索逻辑优化。无论是拼字游戏辅助、词汇学习工具,还是移动端Web性能调优,这套思路都能提供可复用的工程实践,帮助开发者构建响应 阅读详情

相关推荐

C++经典题目二:统计一篇英文文章中的单词个数

要求:统计处一篇英文文章中的不同的单词,并得到单词个数。 用一个单向链表保存所出现的单词,注意几点:1)文件输入输出;2)字符串处理;3)链表数据结构 再看代码——算法实现如下: //=============================================

Love BL & Shine BL 2万+

数据结构串实现单词统计

title: 数据结构串实现单词统计 date: 2018-11-14 19:02:20 categories: - 编程开发 tags: - C语言 说明 前期发得数据结构的算法都是把书上的基本算法和实际问题的算法分离的,现在会把基本算法的头一起发在同一篇博文中,以便查找。(往期的基本算法日志不在更新)。 问题描述 输入一个由若干单词组成的文本行(最多200个字符),每个单词之间用若干个空格隔...

非真非假,非零非一 1561

用c++写的统计英文文章中的单词个数

用c++写的统计英文文章中的单词个数,输出26个字母的统计频率。

[算法 笔记] 统计给定文章的单词个数

  问题出自blog:http://blog.youkuaiyun.com/v_july_v/article/details/6803368   问题:高效统计一篇英文文章里出现的所有单词,按照在文章中首次出现的顺序打印出该单词和它出现的次数。   解决方式:利用Trie完成单词匹配,然后利用链表来统计单词出现的个数。   源代码:    1 #include <stdio.h&g...

weixin_30419799的博客 227

单词及其释义的录入和读取

设计一个程序,该程序输入一个英语单词和它的释义(应考虑一个单词可以有多个释义)。将单词和它的释义分别存放在文件word.dat和meaning.dat中。文件word.dat中存储的数据的结构为:       class index       { public:        char word[20];        streampos offset;       }; 其中,数据成员offset用于记录单词word的释义在文件meaning.dat中的位置。用户输入一个单词,屏幕输出该单词的释义。

编写一个程序,输出该文本文件中含有的单词总数,分析一个文本文件(英文文章)中 各个词出现的频率,输出该文本文件中所有单词的列表,并与出现次数一起打印出来

编写一个程序,分析一个文本文件(英文文章)中 各个词出现的频率,打印出来。文本文件为D:\test.txt ,输出该文本文件中含有的单词总数,分析一个文本文件(英文文章)中 各个词出现的频率,输出该文本文件中所有单词的列表,并与出现次数一起打印出来

统计一篇英文文章中单词出现的频数

1.题目内容:如何统计一篇英文文章中单词出现的频数,依次从键盘中输入该文章。 2.思路:使用map一一映射 3.程序清单: #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;map&gt; using namespace std; int main() { map&lt;string, int&gt; word...

ChanJose的博客 2068

C++读取一文本文件并进行单词统计结果

能从硬盘上读取一文本文件(一篇英语文章),将这篇文章的内容使用适当的数据结构保存起来,能够统计出各个单词出现的频率、和查询特定的单词。

统计英文文章单词JAVA代码

问题:   设计相应的数据结构和算法,尽量高效的统计一片英文文章(总单词数目)里出现的所有英文单词,按照在文章中首次出现的顺序打印输出该单词和它的出现次数 代码:   import java.io.BufferedReader; import java.io.Fil

liujia9234的专栏 2738

每天一个优秀提示词学习收藏 - 文本创作篇(二)

宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本创作 Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!

2401

电流舵DAC设计(一)

如果分辨率继续增加,温度计码译码逻辑成为面积的主要决定因素,数字版图面积增加,总的面积消耗成上升趋势。缺点是:对于高分辨率的 DAC,高位码元和低位码元权重相差很大,当输入码元转换时(以 8 位二进制型 DAC 为例)尤其是中码转换(从 01111111 转换到 10000000),因为此时电流源的选通动作并非理想情况下的绝对一致等因素,导致在极短的时间内,码元会从 01111111 跳转到 11111111 再跳到10000000,这个过程中所有开关都参与转换,会引起最大幅度的尖峰毛刺(glitch);

模拟芯片设计 2872

阿里巴巴面试专场

本系列源于:从July的470道面试题中提取阿里的笔试题和面试题,以助应聘阿里的同学和朋友们一臂之力。 这部分题目大多在2011~2013年左右,近两年的阿里面试笔试题还没有,希望有的朋友能直接发我邮箱:qingyuanluofeng@163.com,或者直接微信我HyperHorse,当然也可以直接在我的blog下面进行评论。 凡是收集到的关于阿里的题目均会在本Blog进行更新。 能力一般

qingyuanluofeng的专栏 4350

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令)

本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。

weixin_29215815的博客 143

几个典型场景的系统设计解决方案

1.分布式系统的GFS、MapReduce和Bigtable (1)GFS一致性模型 GFS一致性模型是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。 它运行于廉价的普通硬件上,提供容错功能。现在开源界有HDFS(Hadoop Distributed File System)。 (2)MapReduce MapReduce是...

weixin_34297704的博客 904

存内计算路线再获加持,清华存内芯片登Science

通过这种方法,可以比较有效的控制二氧化铪忆阻层中的微观变化,以及内部的温度和电场,使得器件具有非常优异的电学特性,而且可以在工厂里大规模生产,推动了高性能忆阻器阵列的诞生。团队搭建了全硬件构成的完整存算一体系统,如下图7所示,在系统里集成了多个忆阻器阵列,并在该系统上高效运行了卷积神经网络算法,成功验证了图像识别功能,证明了存算一体架构全硬件实现的可行性,并且成功实现了以更小的功耗和更低的硬件成本完成复杂的计算[6]。根据测试,在一般神经网络中权重更新的最后阶段,调整步长非常接近0,如图9(C)所示,

PXX12345678的博客 1555

加法器设计—— 原理图与VHDL设计初步

1、在DE2-115开发板上,完成4位全加器系统的设计、下载和功能演示,并在FPGA上实现1位全加器;2、完成3-8译码器的设计、下载和功能演示(利用板上的8段数码管)本次实验在组合逻辑电路的基础上,运用Verilog编程实现了四位全加器和3-8译码器的设计,同时实现了在DE2-115开发板上的下载和功能演示。整个过程加深了我对电路设计和Verilog编程的理解,同时也锻炼了解决问题的能力。

m0_74749526的博客 1237

[記錄]几个典型场景的系统设计解决方案

1.设计一个系统,要求写速度尽可能高,说明设计原理。 解决方案:涉及到BigTable的模型。主要思想是将随机写转化为顺序写,进而大大提高写速度。 由于磁盘物理结构的独特设计,其并发的随机写(主要是因为磁盘寻道时间长)非常慢,考虑到这一点,在BigTable模型中,首先会将并发写的大批数据放...

177

C语言—for循环打印矩形,正三角形,倒三角形,九九乘法,等腰三角形,倒着的等腰三角形(简易版代码)(重点考察for循环嵌套)

本章节教大家如何利用for循环打印正三角形,倒三角形,九九乘法表及等腰三角形(简易版代码)说明:1、循环语句的循环体内又包含另一个完整的循环结构,称为循环结构的嵌套。内嵌的循环语句中还可以再嵌套循环结构,这样就形成多重循环结构的嵌套。2、for 语句、while 语句和 do-while 语句都允许嵌套。三种循环语句可以相互嵌套。3、内层的循环语句必须完全被包含在外层的循环体中,不能发生交叉。

m0_63501145的博客 1695

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1390

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)

wo12369874的博客 1700

OpenAI Codex 入门指南:从 API 调用到生产部署的实战技巧

代码生成与代码补全是提升软件开发效率的核心技术,其背后原理通常基于大型语言模型对海量代码和自然语言文本的深度学习。通过理解模型的“提示-补全”工作机制,开发者可以将其转化为强大的工程实践工具,用于自动化构建、智能IDE插件及辅助编程服务。在实际应用中,有效的提示工程和API集成是关键,这涉及环境配置、参数调优及对生成结果的验证与优化。本文聚焦于 OpenAI Codex 这一专门针对代码训练的模型,系统介绍了从零开始的环境准备、API调用、提示设计到构建可落地的代码生成工具的全流程,并深入探讨了生产环境中面

aikb6223的博客 351

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

人工智能世界观(认知篇)

本文系统梳理了人工智能(AI)的基础知识体系,重点解析了大模型(LLM)的核心原理、技术演进及应用边界。主要内容包括: AI基础认知:从规则驱动到数据驱动的范式转变,强调AI=数据+算法+算力的技术本质,区分了弱AI与通用AI(AGI)的能力差异。 技术发展史:回顾AI七十年发展,从符号主义、专家系统到深度学习的五次技术浪潮,重点分析Transformer架构如何推动大模型革命。 大模型原理:详解LLM的三大支柱(参数量/数据量/算力),揭示自回归生成和注意力机制的工作逻辑,对比GPT与BERT的技术路线差

轻舟已过万重山 545

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Unix_Linux_AIX_常用命令总结

■前言 Unix,Linux 介绍 https://blog.youkuaiyun.com/sxzlc/article/details/103652857(介绍内容在文章底部) ■各种命令 0.cd 目录跳转 1.uname uanme -a 显示服务器全部信息 uname -n 显示服务器名字 2.ifconfig ifconfig -a 查看网络配置 3.who 显示当前在线用户 4.chown ch...............

sun0322 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 用数组实现队列
下一篇: abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份, 拿一份走了;然后cde都按上面的方法取鱼。问他们一共最少打了多少条鱼
豪豪6
博客等级 码龄14年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值