文章目录

  • 题目
  • AC代码
  • 思路
  • 收获

题目


AC代码

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;int main() {int n;cin >> n;vector<string> v1;//建立一个存储string的容器getchar();//去掉换行符for (int i = 0; i < n; i++) {string s1;getline(cin, s1);v1.push_back(s1);}//将所有字符串存入v1//对v1进行处理 将字母换成数字for (int i = 0; i < n; i++) {int len1 = v1[i].size();for (int j = 0; j < len1; j++) {if (isalpha(v1[i][j])) {if (v1[i][j] <= 'C' && v1[i][j] >= 'A') {v1[i].replace(j, 1, "2");} else if (v1[i][j] <= 'F' && v1[i][j] >= 'D') {v1[i].replace(j, 1, "3");} else if (v1[i][j] <= 'I' && v1[i][j] >= 'G') {v1[i].replace(j, 1, "4");} else if (v1[i][j] <= 'L' && v1[i][j] >= 'J') {v1[i].replace(j, 1, "5");} else if (v1[i][j] <= 'O' && v1[i][j] >= 'M') {v1[i].replace(j, 1, "6");} else if (v1[i][j] <= 'S' && v1[i][j] >= 'P') {v1[i].replace(j, 1, "7");} else if (v1[i][j] <= 'V' && v1[i][j] >= 'T') {v1[i].replace(j, 1, "8");} else if (v1[i][j] <= 'Y' && v1[i][j] >= 'W') {v1[i].replace(j, 1, "9");//replace 一定要是字符串}}}}/*for (int i = 0; i < n; i++) {int len = v1[i].size();for (int j = 0; j < len; j++) {if (v1[i][j] == '-') {v1[i].erase(j, 1);}}}*///不能使用erase函数 因为下标会变化for (int i = 0; i < n; i++) {int a = v1[i].find("-");while (a != -1) {v1[i].erase(a, 1);a = v1[i].find("-");}}set<string> set1(v1.begin(), v1.end());//建立集合set来去重set<string>::iterator it;//建立集合迭代器vector<string> v2;//存放最终结果for (it = set1.begin(); it != set1.end(); it++) {//遍历集合int count = 0;//计数for (int i = 0; i < n; i++) {if (*it == v1[i]) {count += 1;}}if (count > 1) {string s = *it;s.insert(3, "-");//insert函数没有返回值v2.push_back(s + " " + to_string(count));}}sort(v2.begin(), v2.end());int lenv = v2.size();for (int i = 0; i < lenv; i++) {cout << v2[i] << endl;}}

思路

其实本模拟题并不难,跟着模拟走就好了。不会用map因为还没有学,所以采用的是vector才存储电话号码,并用set来去重(set遍历要使用迭代器)。
注意在处理vector中的字符串,要去掉’-'的时候,一定不能单独用erase函数,因为这个函数与下标有关,字符串删一个就会下标会发生变化,所以采用的是while+find来处理。后面基本都看得懂。

收获

最大的收获是处理字符串的函数以及set容器的使用。
replace insert insert三个函数都是没有返回值的,而且是插入的那个不能用单引号引用,要采用双引号引用才行。
还有如果cin与getline一起用的话,注意要getchar掉一个换行符 因为单用cin这一行并没有结束。

hnu暑期实训之487-3279 字符串处理相关推荐

  1. hnu 暑期实训之回文串

    文章目录 题目 思路 AC代码 题目 思路 回文串首先可以对所给的字符串判断一下看看是不是回文串,如果是就直接输出0:对于不是回文串的,我们先来观察一段回文串 "abcba" 对于 ...

  2. hnu 暑期实训之7还是7 to_string的实现方法

    文章目录 题目 思路 AC代码 收获 题目 思路 思路其实很简单,利用字符串与模运算即可. AC代码 #include <bits/stdc++.h> using namespace st ...

  3. hnu 暑期实训之愚人节的礼物

    文章目录 题目 思路 AC代码 收获 题目 思路 利用字符串的find函数找到B的位置,循环B左侧的字符,遇到左括号就+1,遇到右括号就-1(反正是合法的,空箱子一加一减也就不变了),出sum1即可. ...

  4. string转换函数以及hnu暑期实训部分和A+B的例题

    目录 string和数值转换 函数stoi(s) stoll(s) stof(s) to_string(int n).to_string(double a) 例题 需要C++11的语法支持,具体操作时 ...

  5. hnu 暑期实训之疫情期间

    文章目录 题目 思路 AC代码 题目 [样例输入1] 4 1 3 2 0 [样例输出1] 2 [样例输入2] 7 1 3 3 2 1 2 3 [样例输出2] 0 [样例输入3] 2 2 2 [样例输出 ...

  6. hnu 暑期实训之最少钱币数

    文章目录 题目 AC代码及思路 收获 题目 AC代码及思路 #include <bits/stdc++.h> using namespace std;int main() {int pri ...

  7. hnu 暑期实训之蛇形矩阵

    文章目录 题目![在这里插入图片描述](https://img-blog.csdnimg.cn/2340a76f57c7440d937ed2b38107f60f.png?x-oss-process=i ...

  8. hnu 暑期实训之web导航

    文章目录 题目 思路 AC代码 python版 题目 [问题描述] 标准的Web浏览器具有在最近访问的页面中前后移动的特性.实现这些特性的一种方法是使用两个堆栈来跟踪可以通过前后移动到达的页面.在这个 ...

  9. hnu 暑期实训之到底买不买

    文章目录 题目 思路 AC代码 题目 思路 外层遍历小红要的珠子,内层遍历商家提供的珠子,如果相等计数器就+1.遍历完成后,对于计数器,它的最大值只会是小红珠子的长度.如果它们相等就说明小红可以搞到这 ...

最新文章

  1. Qt Linguist 界面语言翻译
  2. 20年工作经验的架构师写给程序员的一封信
  3. CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并
  4. 博物馆自动灭火系统应如何选择
  5. linux命令的详情描述,linux 常用基础命令 tail 详细介绍
  6. Synergy工具 共享Windows系统电脑Linux系统电脑 鼠标键盘
  7. 第四范式恭祝大家新年快乐!
  8. Python django-restframework 前后端分离实现在线教育课程平台
  9. 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。
  10. Android 指纹调试流程(高通、MTK均适用)
  11. 进度条控制(Windows 公共进度栏控件的功能)
  12. 会理天气预报软件测试,会理天气预报15天
  13. 1000道Python题库系列分享八(29道)
  14. DOS命令批量删除文件及制作该命令的批处理命令详解
  15. 快读快写:读入输出优化
  16. 5.SOA架构:服务和微服务分析及设计--- REST服务建模过程
  17. png转ico图标的在线网站
  18. C语言指针(函数指针数组,二级指针)
  19. 云宏WinCloud前端工程师告诉你什么是UI扁平化
  20. 这些网络故障的处理手段,你都试过了吗

热门文章

  1. 关于使用百度地图插件的显示行政区域的操作
  2. Oracle使用ODBC连接配置
  3. LeetCode_Rotate List
  4. 关于RDLC使用导出PDF文件时,中文乱码解决方案
  5. 如何设置ListView控件中的列头的颜色!
  6. java - 只输出中文, 包含中文标点符号
  7. Ubuntu12.04中eclipse提示框黑色背景色修改
  8. 动态规划____编辑距离
  9. 《菜菜的机器学习sklearn课堂》聚类算法Kmeans
  10. Linux操作Oracle(5)——Oracle11g 卸载OPatch安装补丁的方法【rollback已安装的补丁】及报错问题解决