HOJ.单词统计
目录
- 题目
- 算法标签: 模拟, 字符串操作
- 思路
- 代码
- *后续 A C AC AC代码
题目
一段英语短文的内容记录于 lines
中,每行输入 lines[i]
仅包含 a-z
, .
, -
,即英文小写字母,空格,逗号,句号和续行符。
请统计单词数量:
-
表示续行符(仅会出现在行尾,且不会出现在最后一行)- 对于含有续行符的行:将下一行的首个非空字符起的余下部分,拼接在当前行续行符左侧的字符后;
- 对于不含续行符的行:与下一行是分隔的,相当于有一个单词分隔符。
单词:全部由字母组成
其它均为单词分隔符:包括一个或多个连续的空格、逗号、句号 。
输入
1 <= lines.length <= 25
1 <= lines[i].length <= 80
输出
一个整数,表示所统计的单词数量
算法标签: 模拟, 字符串操作
思路
整体算法分为三步
- 将带有续行符的单词进行合并
- 将字符串中的其他分隔符替换为空格, 并将字符串数组合并为一个单词字符串
- 将处理完的字符串放入 i s t r i n g s t r e a m istringstream istringstream进行流式计数
整体算法时间复杂度是 O ( n ) O(n) O(n), 但是边界情况很多, 实现起来比较复杂
代码
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cctype>using namespace std;class Solution {
public:vector<string> strs;void merge(vector<string> &ans) {int i = 0, n = strs.size();while (i < n) {string s = strs[i];i++;//对于当前字符串合并所有可能的字符串while (true) {if (strs.empty() || s.back() != '-' || i >= n) break;//去除连接符s.pop_back();string ne_s = strs[i];int pos = ne_s.find_first_not_of(' ');if (pos != string::npos) s += ne_s.substr(pos);else s += ne_s;i++;}ans.push_back(s);}}void handle(string &s, vector<string> &vec) {for (string &tmp : vec) {bool pre = true;for (char c : tmp) {if (isalpha(c)) {s += c;pre = false;}else if (!pre) {s += ' ';pre = true;}}if (!s.empty() && !pre) s += ' ';}}int GetWordsCnt(const vector<string> &lines) {strs = lines;vector<string> vec;merge(vec);string s;//执行步骤2handle(s, vec);istringstream is(s);string tmp;int ans = 0;while (is >> tmp) ans++;return ans;}
};
*后续 A C AC AC代码
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cctype>using namespace std;class Solution {
public:vector<string> strs;void merge(vector<string> &ans) {int i = 0, n = strs.size();while (i < n) {string s = strs[i];i++;while (true) {if (strs.empty() || s.back() != '-' || i >= n) break;s.pop_back();string &ne_s = strs[i];int pos = ne_s.find_first_not_of(' ');if (pos != string::npos) s += ne_s.substr(pos);else s += ne_s;i++;}ans.push_back(s);}}void handle(string &s, vector<string> &vec) {for (string &tmp : vec) {//记录前一个位置是否是空格bool pre = true;for (char c : tmp) {if (isalpha(c)) {s += c;pre = false;}//当前位置不是字母并且前一个位置不是空格说明是其他的分割符需要转化为空格并且标记当前位置是空格else if (!pre) {s += ' ';pre = true;}}//字符串不为空并且前面前面没有空格if (!s.empty() && !pre) s += ' ';}}int GetWordsCnt(const vector<string> &lines) {strs = lines;vector<string> vec;merge(vec);string s;handle(s, vec);istringstream is(s);string tmp;int ans = 0;while (is >> tmp) ans++;return ans;}
};
相关文章:
HOJ.单词统计
目录 题目算法标签: 模拟, 字符串操作思路代码*后续 A C AC AC代码 题目 一段英语短文的内容记录于 lines 中,每行输入 lines[i] 仅包含 a-z , . , -,即英文小写字母,空格,逗号,句号和续行符。 请统计单词数量&#…...
C++ round 函数笔记 (适用于算法竞赛)
在算法竞赛中,处理浮点数并将其转换为整数是常见的需求,round 函数是标准库提供的用于执行“四舍五入”到最近整数的工具。理解其工作方式和潜在问题对于避免错误至关重要。 1. 基本用法 头文件 要使用 round 函数,需要包含 <cmath>…...
远程访问服务器的Jupyter Notebook
在 Linux 服务器上安装 Jupyter Notebook 可以直接调用服务器资源,适合处理大规模数据处理、复杂模型训练等计算密集型任务,避免本地设备算力不足的限制。 一、安装 Jupyter Notebook(在服务器上) 激活 conda 环境安装 conda install jupyter notebook 关于安装命名 1.…...
DNS实验
DNS原理 客户端发起请求:客户端向本地 DNS 服务器发送域名解析请求,这是流程的起始点。本地 DNS 服务器查询根域名服务器:若本地 DNS 服务器缓存中无对应记录,它向根域名服务器发起查询,根域名服务器是 DNS 系统顶层&a…...
SQL实战:02之连续数问题求解
文章目录 概述题目:体育馆的人流量题解步骤一:构造出一个连续序列步骤二:找出符合条件的组的序号步骤三:fetch结果,使用内连接过滤出符合条件的记录。完整SQL 题目二:连续出现的数字题解步骤一:分区并构建连…...
【C++】STL之deque
deque Deque 的底层既不直接依赖 vector 也不依赖 list,而是结合了两者的思想,采用了一种分块(chunk)存储与动态指针数组(map)结合的结构。以下是详细分析: 1. 底层结构设计 Deque 的核心设计…...
HTB - BigBang靶机记录
HTB - BigBanghttps://mp.weixin.qq.com/s/D7yR00kHdiIfoOFk_jHa9w...
AI时代的能力重构与终身进化
在数字技术加速迭代、职业边界日益模糊的当下,自我提升已从“阶段式学习”演变为“持续性进化”。这一转型的底层逻辑在于:个体能力需从“知识积累”转向“能力重构”,以适应AI技术重塑的社会分工与价值创造模式。本文将从认知升级、技能进化、生态构建三个维度,解析AI时代…...
Java—— 正则表达式 方法及捕获分组
识别正则表达式的方法 方法名说明public String[] matches(String regex) 判断字符串是否满足 正则表达式的规则 public string replaceAll(String regex,string newstr) 按照正则表达式的 规则进行替换 public string[] split(String regex) 按照正则表达式的 规则切割字符串…...
《100天精通Python——基础篇 2025 第2天:Python解释器安装与基础语法入门》
目录 一、Windows安装Python1.1 下载并安装 Python1.2 测试安装是否成功 二、Linux系统安装Python(新手可以跳过)2.1 基于RockyLinux系统安装Python(编译安装)2.2 基于Ubuntu系统安装Python(编译安装)2.3 macOS 安装python解释器 三、如何运行Python程序?3.1 Python…...
Linux平台实现低延迟的RTSP、RTMP播放
在流媒体播放器的开发过程中,RTSP(实时流协议)和RTMP(实时消息协议)是广泛应用的流媒体协议。本博客将介绍如何使用大牛直播SDK实现一个Linux平台下的RTSP/RTMP播放器。大牛直播SDK的Linux平台播放SDK,支持…...
安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中,时间与效率直接决定着患者的生命。传统急救模式下,急救人员常通过视频或电话与医院医生进行沟通,以描述患者状况并依照指令行动。然而,这种信息传递方式往往因信息不完整或传递延…...
chili3d调试笔记9 参数化建模+ai生成立方体
mainwindow 怎么渲染boxnode https://github.com/ticket180/chili3d chili3d ai画立方体...
天梯——L1-110 这不是字符串题
代码 #include<bits/stdc.h> using namespace std; int main(){int n,m;cin>>n>>m;string s;for(int i0;i<n;i){int x;cin>>x;schar(x0);}while(m--){int x;cin>>x;if(x1){int l1;string s1;cin>>l1;for(int i0;i<l1;i){int a;cin&…...
React在什么情况下需要用useReducer
在 React 中,useReducer 是一个用于管理复杂状态逻辑的 Hook。它是 useState 的替代方案,适用于状态更新逻辑复杂或状态之间相互关联的场景。 什么时候需要使用 useReducer 状态更新逻辑复杂: 如果状态更新涉及多个操作或有复杂的逻辑&#x…...
要从给定的数据结构中提取所有的 itemList 并将其放入一个新的数组中
const data [{id:1,itemList:[{id:1-1,list:0},{id:1-2,list:0}]},{id:2,itemList:[{id:2-1,list:0}]} ]使用 forEach const newItemList [];data.forEach(item > {newItemList.push(...item.itemList); });console.log(newItemList);reduce const newItemList data.re…...
程序员鱼皮最新项目-----AI超级智能体教程(一)
文章目录 1.前言1.什么是AI大模型2.什么是多模态3.阿里云百炼平台介绍3.1文本调试展示3.2阿里云和dashscope的关系3.3平台智能体应用3.4工作流的创建3.5智能体编排应用 1.前言 最近鱼皮大佬出了一套关于这个AI 的教程,关注鱼皮大佬很久了,鱼皮大佬确实在…...
17.磁珠在EMC设计中的运用
磁珠在EMC设计中的运用 1. 磁珠的高频等效特性2. 磁珠的参数分析与选型3. 磁珠应用中的隐患问题 1. 磁珠的高频等效特性 和磁环类似,低频段感性jwL为主,高频段阻性R为主。 2. 磁珠的参数分析与选型 不需要太在意磁珠在100MHz时的电阻值,选型…...
常见接口测试常见面试题(JMeter)
JMeter 是 Apache 提供的开源性能测试工具,主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。它支持多种协议,如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中,JMeter 的执行顺序通常为:配置元件…...
2026届华为海思秋暑期IC实习秋招笔试真题(2025.04.23更新)
今天给大家分享下华为海思2025.04.23号最新IC笔试真题。 华为海思IC前端中后端(COT&XPU)岗位笔试机考题 更多华为海思数字IC岗秋招实习笔试真题,可以私信小编。 数字后端培训实战项目六大典型后端实现案例 秒杀数字后端实现中clock gating使能端setup viola…...
水域陆地两相宜,便携漏电探测仪
在自然灾害如洪水、地震、台风及火灾中,建筑物和电力设施易因结构破坏、线路老化或设备浸水导致绝缘失效,引发漏电事故。漏电不仅直接威胁人员生命安全,还可能引发二次火灾或爆炸,尤其在潮湿环境下导电性增强,触电风险…...
论文笔记(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning
STOMP: Stochastic Trajectory Optimization for Motion Planning 文章概括摘要一、引言二、相关工作三、STOMP 算法A. 探索B. 轨迹更新 四、机械臂的运动规划A. 设置B. 代价函数1)障碍物代价:2)约束代价:3)扭矩代价&a…...
如何应对客户提出的不合理需求
在项目执行过程中,客户经常会提出一些看似不合理的需求,这些需求可能超出了预算、时间范围,或与项目初期的目标不符。应对这些不合理需求的最佳方法是通过清晰沟通、设定合理期望、与客户共同探索解决方案来有效管理这些需求。例如࿰…...
SEO的关键词研究与优化 第一章
关键词研究和优化是SEO的核心。通过深入了解目标受众使用的搜索词,我们可以优化网站内容,提高搜索引擎排名,并吸引更多相关流量。本章将详细探讨关键词研究的方法、和最佳实践。 关键词类型对比分析 1. 关键词研究的基础 了解不同类型的关键…...
A2A Agent 框架结构化分析报告
A2A Agent 框架结构化分析报告 第一章 绪论 1.1 引言 在全球数字化转型的浪潮中,人工智能(Artificial Intelligence, AI)技术正以前所未有的速度改变着我们的生活和工作方式。然而,随着AI系统的广泛应用,单一AI系统…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)つもり 计划/打算(2&a…...
对patch深入理解下篇:Patch+LSTM实现以及改进策略整理
我在去年11月份写了pat入理解的上篇,主要介绍patch的原理和代码实现过程。文章发布后很多朋友催更下篇,其实一直在积累素材,因为介绍完原理和实现之后,下一步肯定是要考虑如何改进。在这之前,首先,我们接着…...
线程同步与互斥(互斥)
目录 线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 互斥量的接⼝ 初始化互斥量 初始化互斥量有两种⽅法 销毁互斥量 互斥量加锁和解锁 加锁的使用 互斥量实现原理探究 互斥量的封装 Mutex.hpp Main.cc 线程互斥 进程线程间的互斥相关背景概念 临界资源&…...
基于RFID的智能家居系统设计与实现
标题:基于RFID的智能家居系统设计与实现 内容:1.摘要 随着物联网技术的飞速发展,智能家居系统成为了人们关注的焦点。本研究的目的是设计并实现一个基于RFID(射频识别)的智能家居系统,以提高家居的智能化水平和用户的生活便利性。…...
JAVA设计模式——(六)装饰模式(Decorator Pattern)
JAVA设计模式——(六)装饰模式(Decorator Pattern) 介绍理解实现被装饰类被装饰类的具体实现装饰类装饰类具体实现测试 适用场景 介绍 动态给一个对象添加一些额外的功能,动态的扩展其功能。 理解 装饰模式…...
CGAL 网格等高线计算
文章目录 一、简介二、实现代码三、实现效果一、简介 这里等高线的计算其实很简单,使用不同高度的水平面与网格进行相交,最后获取不同高度的相交线即可。 二、实现代码 #include <iostream> #include <iterator> #include <map>...
Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势
Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第十篇,也是本系列的总结篇,将全面回顾 Apache ShardingSphere 生态,包括其核心组件、功能模块和与其他…...
ETL 数据集成都包含哪些?
一、ETL 数据集成都包含哪些? 数字化时代数据已成为企业最为宝贵的资产之一。然而,企业的数据往往分散在多个不同的系统和平台中,如关系型数据库、文件系统、API 等。为了将这些分散的数据整合起来,为企业决策提供全面、准确的支…...
windows系统自定义powshell批处理脚本
windows自定义powshell批处理脚本 前几天看到大神自定义批处理骚操作操作,觉得很有意思,本篇文章记录一下入门学习笔记。 PowerShell 是一种功能强大的脚本语言和命令行外壳,基于.NET Framework,广泛应用于 Windows 系统管理、自…...
【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化
基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化 一、项目架构与技术解析1.1 核心算法架构1.2 学术基础 二、实战环境配置2.1 硬件要求与系统配置2.2 分步安装指南 三、核心功能实战3.1 基础车辆计数3.2 自定义检测类别3.3 多区域计数配置 四、性能优化技…...
Java基础系列-HashMap源码解析3-红黑树
文章目录 红黑树定义与AVL树对比插入节点插入节点是根节点插入节点的叔叔是红色插入节点的叔叔是黑色 构建示例删除节点只有左子树/只有右子树 只有左孩子/只有右孩子没有孩子如果双黑节点的兄弟是黑色:如果双黑节点的兄弟是红色: 总结 红黑树 定义 与…...
Linux系统的延迟任务及定时任务
延迟任务的发起 在系统中我们可以使用at命令来发起延迟任务 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中 at 任务信息存放在系统中/var/spool/at目录中 at 任务的日志文件被存放到/var/log/cron中 at 任务执行时如果遇到系统处于关闭状态…...
【蓝桥杯】水质检测
水质检测 题目描述 小明需要在一条 2 n 2 \times n 2n 的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有传递性,即如果 A A A 和 B B B 连通…...
【晶振】晶振的工作原理及其与单片机关系
晶振(晶体振荡器)是电子设备中常见的元件,其核心功能是提供稳定的时钟信号,而单片机(MCU)依赖这一信号来同步内部操作。以下是晶振的工作原理及其与单片机关系的详细说明: 一、晶振的工作原理 压电效应与谐振 晶振的核心是石英晶体,利用其压电效应: 当在晶体两端施加电…...
配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容
配置 C/C 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…...
Postgresql源码(143)统计信息基础知识(带实例)
概念与总结 高频值(Most Common Values, MCV) 存储在 most_common_vals 中。每个高频值的频率通过 most_common_freqs 单独记录(例如 0.010966667 等)。MCV 用于优化等值查询(如 poid 33)&…...
【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现
项目介绍 本课程演示的是一款 基于SpringBootvue的疫苗接种系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...
解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案
以下是解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案: 错误原因 Dart Sass 1.x 版本中使用的旧 JavaScript API(如 sass.render() 或 sass.compile() 的旧调用方式)将在 2.0.0 版本中被移除。需迁移到新 API 以避免未来报错。…...
Concepts (C++20)
C20 Concepts Concepts 是 C20 引入的核心特性,用于显式约束模板参数,提升代码可读性和错误提示。以下通过代码示例和原理分步骤解析其用法。 1. 基本概念 目标:显式声明模板参数必须满足的条件。优势:替代复杂的 SFINAE 和 ena…...
CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞
1.漏洞介绍 Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能,该功能会将参数中字符后跟的文件路径替换为该文件的内容,允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 2.poc利用 下…...
利用 SSE 实现文字吐字效果:技术与实践
利用 SSE 实现文字吐字效果:技术与实践 引言 在现代 Web 应用开发中,实时交互功能愈发重要。例如,在线聊天、实时数据监控、游戏中的实时更新等场景,都需要服务器能够及时将数据推送给客户端。传统的请求 - 响应模式在处理实时性要求较高的场景时显得力不从心,而 Server…...
离线部署kubernetes
麒麟Linux服务器 AMR架构 🧰 离线部署 Kubernetes v1.25.9(麒麟系统 Docker) 一、验证Docker部署状态 检查Docker服务运行状态 systemctl status docker 预期输出应显示 Active: active (running),表明服务已启动18。 …...
2024武汉邀请赛B.Countless Me
题目链接 #include<bits/stdc.h> using namespace std; using lllong long;int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n; cin>>n;vector<ll>a(n1);ll res0;for(int i1;i<n;i) cin>>a[i],resa[i];ll ans0;for(int i32;i>…...
第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道
目录 一、为什么农学科研中需要“可解释AI”? ✅ 场景示例: 二、常见可解释AI工具介绍 1. SHAP(SHapley Additive exPlanations) 2. LIME(Local Interpretable Model-agnostic Explanations) 三、AI伦理问题在农学中的体现 🧭 公平性与偏见 🔐 数据隐私 🤖…...
《Python3网络爬虫开发实战(第二版)》配套案例 spa6
Scrape | Moviehttps://spa6.scrape.center/ 请求影片列表api时,不仅有分页参数,还多了一个token,通过重发请求发现token有时间限制,所以得逆向token的生成代码。 通过xhr断点定位到接口请求位置 刷新页面或者点翻页按钮&#x…...