一行文本中的最长单词

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

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

Linux文本三剑客sed

sed和awk grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式 sed sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除 一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。 sed的命令格式和操作选项: sed -e '操作符 ' -e '操作符' 文件1 文件2 -e表示可以跟多个操作

剑指offer(C++)--翻转单词顺序列

题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么? class S

TableView 当前选中的行号。 默认会使哪一行选中 加入导航条后contentInset向下偏移的64

1.得到当前选中的行号     NSLog(@"%ld %s",  [self.tableView indexPathForSelectedRow].row,__func__); 2.默认选中表格的那一行     [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0 ]

Sublime Text 快速折叠CSS代码到一行

快速折叠CSS代码到一行 1.使用HTML/CSS/JS Prettify或者CSScomb美化代码 2.使用Alt+F3特征选取,删除下图中所有的特征空格 3.使用Ctrl+Shift+M选取括号里的内容,再使用一次Ctrl+Shift+M将大括号也一起选中。 4.使用Ctr+J折叠代码 5.Home键 6.Backspace键

最长考拉兹序列

题目:  考虑如下定义在正整数集上的迭代规则:  n    n/2 (若n为偶数) n    3n+1 (若n为奇数) 从13开始,可以迭代生成如下的序列:         13  40  20  10  5  16  8  4  2  1 可以看出这个序列(从13开始到1结束)共有10项。 尽管还未被证明,但普遍认为,从任何数开始最终都能抵达1并结束, 这被称为 “考拉兹序列”。

nlp基础-文本预处理及循环神经网络

1 认识文本预处理 1 文本预处理及其作用 定义:文本送给模型之前,提前要做的工作 作用:指导模型超参数的选择 、提升模型的评估指标 举个例子: 思路常识,打造成 X Y关于Y:10分类标签是否均衡关于X:数据有没有脏数据 数据长度(512)样本不够! 文本预处理 工作 结束 的标志:准备出来X和Y 能送给模型 2 文本预处理的主要环节 1 文本处理的基本方法 分词:按照一定规

文本三剑客—sed命令

sed命令 一、概念 sed是一种流编辑器,一次处理一行内容。 处理方式:一行一行处理,处理完当前行,才会处理下一行,直到文件末尾。 如果只是展示,会放在缓冲区(模式空间),展示结束之后,会从模式空间把操作结果删除。 二、sed的命令格式和操作选项 1、命令格式 sed -e ‘操作符1;操作符2’ 文件1 文件2 sed -e ‘操作符’ -e ‘操作符’ 文件1 文件2 -e

NLP中文本的嵌入层

在自然语言处理(NLP)任务中,模型学习的不是原始的文本字符串,而是这些字符串通过分词和索引化过程转换成的单词索引。实际学习的内容是这些单词索引对应的嵌入向量及其在模型中的权重。 原始文本到模型输入的过程 原始文本: 例如:“hello world” 分词(Tokenization): 将文本字符串分割成单词、子词或字符。例如:["hello", "world"] 构建词汇表(Voc