一行文本中的最长单词

2024-06-18 13:18
文章标签 单词 一行 最长 文本

本文主要是介绍一行文本中的最长单词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:已知 string sentence="We were her pride of 10 she named us: Benjamin, Phoenix, the  Pordigal and perspicacious pacific Suzanne.";

要求:计算sentence中有多少个单次,并指出其中最长和最短的单词,如果有多个,则将它们全部输出。

解法:使用find_first_of 和find_first_not_of,寻找到单词的起始位置,以剔除标点;
    使用vector存放最长和最短单词:通过贪心算法,寻找“最**”单词

#include<iostream>
#include<string>
#include<vector>
using namespace std;int main(){string sentence="We were her pride of 10 she named us: Benjamin, Phoenix, the Pordigal and perspicacious abcdefghijklmnopqrstuvwxyz pacific Suzanne.";string separators="\t\f\r\n\v:,. ";//作为分隔符string::size_type maxLen,minLen,wordLen,count=0;string word;vector<string> longestWords, shortestWords;string::size_type startPos=0,endPos=0;while( (startPos=sentence.find_first_not_of(separators,endPos) ) !=string::npos){//npos是一个常数,用来表示不存在的位置++count;//找到下一个单词的结束位置endPos=sentence.find_first_of(separators,startPos);//若找不到下一个分隔符,则说明该单词为最后一个单词if(endPos==string::npos){wordLen=sentence.size()-startPos;}else{wordLen=endPos-startPos;}//注意这里不要是sentence.begin()+endPos;有可能endPos为string::npos;//word.assign(sentence.begin()+startPos, sentence.begin()+startPos+wordLen);word=sentence.substr(startPos, wordLen);//从startPos开始,wordLen个字母构成的子串/if(count==1){longestWords.push_back(word);shortestWords.push_back(word);maxLen=minLen=wordLen;}else{if(wordLen>maxLen){longestWords.clear();longestWords.push_back(word);maxLen=wordLen;}else if(wordLen==maxLen){longestWords.push_back(word);}if(wordLen<minLen){shortestWords.clear();shortestWords.push_back(word);minLen=wordLen;}else if(wordLen==minLen){shortestWords.push_back(word);}}// end of else}//end of while//输出单词数目cout<< "word amount: "<< count <<endl;vector<string>::iterator iter;//输出最长单词cout<< "longest words: "<<endl;iter=longestWords.begin();while( iter!=longestWords.end()  )cout<< *iter++ <<endl;//输出最短单词cout<< "shortest words: "<<endl;iter=shortestWords.begin();while(iter!=shortestWords.end())cout<< *iter++ <<endl;return 0;
}



这篇关于一行文本中的最长单词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072098

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Python文本相似度计算的方法大全

《Python文本相似度计算的方法大全》文本相似度是指两个文本在内容、结构或语义上的相近程度,通常用0到1之间的数值表示,0表示完全不同,1表示完全相同,本文将深入解析多种文本相似度计算方法,帮助您选... 目录前言什么是文本相似度?1. Levenshtein 距离(编辑距离)核心公式实现示例2. Jac

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代