尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

csp信奥赛C++高频考点专项训练之字符串 --【子串查找】:小杨的字典

csp信奥赛C++高频考点专项训练之字符串 --【子串查找】:小杨的字典 csp信奥赛C高频考点专项训练之字符串 --【子串查找】小杨的字典题目描述在遥远的星球有两个国家 A 国和 B 国他们使用着不同的语言A 语言和 B 语言。小杨是 B 国的翻译官他的工作是将 A 语言的文章翻译成 B 语言的文章。为了顺利完成工作小杨制作了一本字典里面记录了N NN个 A 语言单词对应的 B 语言单词巧合的是这些单词都由地球上的 26 个小写英文字母组成。小杨希望你写一个程序帮助他根据这本字典翻译一段 A 语言文章。这段文章由标点符号!()-[]{}\|;:,./?和一些 A 语言单词构成每个单词之间必定由至少一个标点符号分割你的程序需要把这段话中的所有 A 语言单词替换成它的 B 语言翻译。特别地如果遇到不在字典中的单词请使用大写 UNK 来替换它。例如小杨的字典中包含2 22个 A 语言单词abc和d它们的 B 语言翻译分别为a和def那么我们可以把 A 语言文章abc.d.d.abc.abcd.翻译成 B 语言文章a.def.def.a.UNK.其中单词abcd不在词典内因此我们需要使用 UNK 来替换它。输入格式第一行一个整数N NN表示词典中的条目数。保证N ≤ 100 N \le 100N≤100。接下来N NN行每行两个用单个空格隔开的字符串A AAB BB,分别表示字典中的一个 A 语言单词以及它对应的 B 语言翻译。保证所有A AA不重复保证A AA和B BB的长度不超过10 1010。最后一行一个字符串S SS表示需要翻译的 A 语言文章。保证字符串S SS的长度不超过1000 10001000保证字符串S SS只包含小写字母以及标点符号!()-[]{}\|;:,./?。输出格式输出一行表示翻译后的结果。输入输出样例 1输入 12 abc a d def abc.d.d.abc.abcd输出 1a.def.def.a.UNK输入输出样例 2输入 23 abc a d def abcd xxxx abc,(d)d!-abc?abcd输出 2a,(def)def!-a?xxxx输入输出样例 #3输入 31 abcdefghij klmnopqrst !()-[]{}\|;:,./?abcdefghijklmnopqrstuvwxyz输出 3!()-[]{}\|;:,./?UNK这道题用 STL 的map就能搞定核心思路是“逐字符扫描 单词缓存”。思路分析建立词典映射用一个mapstring, string来存储 A 语言单词和 B 语言翻译的对应关系便于快速查找。逐字扫描从头到尾遍历待翻译的文章s。如果当前字符是字母就把它追加到一个临时的word字符串里用来拼接出一个完整的单词。如果遇到标点符号说明前面的单词已经结束此时需要去词典里查word。如果查到了就把它的翻译加到结果里否则就添加UNK。接着再把这个标点符号本身也添加到结果中并清空word。处理末尾文章扫描完成后还要检查一下word是否还有内容有的话就按规则处理避免遗漏最后一个单词。代码实现#includebits/stdc.husingnamespacestd;intmain(){// 建立 A 语言到 B 语言的映射词典mapstring,stringmp;intn;cinn;string a,b;// 读入 N 个单词对for(inti0;in;i){cinab;mp[a]b;// 存储映射关系}string s,t,ans;cins;// 读入待翻译文章// 逐字符扫描文章for(inti0;i(int)s.size();i){// 当前字符是小写字母将其添加到临时单词中if(s[i]as[i]z){ts[i];}else{// 遇到标点符号触发单词处理// 如果临时单词非空说明一个单词收集完毕if(t!){// 查询词典找到则输出翻译否则输出 UNKif(mp.count(t))ansmp[t];elseansUNK;t;// 清空临时单词准备下一个}// 标点符号本身也要保留anss[i];}}// 处理文章末尾可能遗留的最后一个单词if(t!){if(mp.count(t))ansmp[t];elseansUNK;}// 输出最终结果coutansendl;return0;}【完整系列请查看专栏】信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转各种学习资料助力大家一站式学习和提升#includebits/stdc.husingnamespacestd;intmain(){cout########## 一站式掌握信奥赛知识! ##########;cout############# 冲刺信奥赛拿奖! #############;cout###### 课程购买后永久学习不受限制! ######;return0;}【秘籍汇总】完整csp信奥赛C学习资料1、csp/信奥赛C完整信奥赛系列课程永久学习https://edu.csdn.net/lecturer/7901 点击跳转2、CSP信奥赛C竞赛拿奖视频课https://edu.csdn.net/course/detail/40437 点击跳转https://edu.csdn.net/course/detail/41081 点击跳转3、csp信奥赛高频考点知识详解及案例实践CSP信奥赛C动态规划https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转CSP信奥赛C标准模板库STLhttps://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转信奥赛C提高组csp-s知识详解及案例实践https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转4、csp信奥赛冲刺一等奖有效刷题题解信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转信奥赛C提高组csp-j初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转信奥赛C提高组csp-s初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转5、GESP C考级真题题解GESP(C 一级二级三级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转GESP(C 四级五级六级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转GESP(C 七级八级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}
返回列表