心得:

1.字符串每个字符是char类型

2.char类型可以认为是整数类型,和int一样,甚至97=='a'是对的,只不过char存数字的时候会有一个映射,将存的数字转换成对应的字符

3.转大小写有一个tolower和toupper,直接cout输出是数字,所以想变成字符,需要char映射

4.algorithm有一个transform(),也能变大小写,transform(iterator beg1, iterator end1, iterator beg2, _func);//beg1 源容器开始迭代器,   //end1 源容器结束迭代器,    //beg2 目标容器开始迭代器,  //_func 函数或者函数对象,目标迭代器也可以是自身,就是改变自己

所以自己转大写就是transform(s.begin(),s.end(),s.begin(),::toupper),小写是::tolower

题目:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

输入格式:

输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。

输出格式:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。

输入样例:

7_This_is_a_test
_hs_s_a_es

输出样例:

7TI

思路:

从给出的字符串取出每一个字符,用它在实际被输入的字符串中找,没找到就是坏键,由于不区分大小写,也就是不管大写小写,只要没有就是坏键,所以可以将两个字符串都转成大写

用一个vector存坏键,存之前还要判断是否已经存在了这个坏键,如果已经存在的话就不用存了

代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool in_this_string(char a,string test)
{int pos;pos=test.find(a,0);if(pos!=test.npos)return true;elsereturn false;
}
bool in_this_vector(char a,vector<char>v)
{auto it=find(v.begin(),v.end(),a);if(it!=v.end())return true;elsereturn false;
}
int main()
{string tested,reality;vector<char> vec;cin>>tested>>reality;transform(tested.begin(),tested.end(),tested.begin(),::toupper);transform(reality.begin(),reality.end(),reality.begin(),::toupper);for(int i=0;i<tested.size();i++){if(!in_this_string(tested[i],reality)){if(!in_this_vector(tested[i],vec))vec.push_back(tested[i]);}}for(int i=0;i<vec.size();i++)cout<<vec.at(i);return 0;
}

狂暴者 pat basic 练习二十九 旧键盘相关推荐

  1. 狂暴者 pat basic 练习二十六 程序运行时间

    心得: 1.隐式类型转换有两种: (1)赋值语句 float a, int b=2; a=b;b自动升级(不过java输出a是2.0,而c++还是2) (2)算术表达式  float a, int b ...

  2. 狂暴者 pat basic 练习二十五 反转链表

    心得: 1.map还分为普通map和unordered_map,map需要根据key进行排序,而un不要,所以un更快一些 2.除了map.insert()方法能插入数据外,还有一种中括号赋值的方式更 ...

  3. 狂暴者 pat basic 练习二十四 科学计数法

    心得: 对待问题时找规律,以分解的思想看问题 题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数 ...

  4. 狂暴者 pat basic 练习二十八 人口普查 测试点3格式错误

    心得: 1.学习的时候要把以前的经验都牢记于心,比如"优先级不等比较法","字符串分割法" 2.结构体传参也是有传值和传址之分,和基本类型一样,不用指针传的是拷 ...

  5. 狂暴者 pat basic 练习二十二 D进制的A+B 测试点2,3,4原因

    心得: 在题目要求的数据大小接近int范围时(2^31-1),最好考虑不要用整型了,其实long的定义只要求不比int小,而现在基本上都是64位机,int和long都是4个字节的,所以long也不要用 ...

  6. 黎明者 pat basic 练习八十九 狼人杀-简单版

    心得: 这一题和第八十八题一样,考的是枚举 所谓枚举,就是尝试每一种可能的情况 先假设某种情况是对的,然后再查看在这种情况下,已知的条件是否是符合说明 就是对每种可能使用反证法 题目: 以下文字摘自& ...

  7. 心眼者 pat basic 练习六十九 微博转发抽奖

    心得: 这一题很坑人,本以为它是从起始的下标开始,从N个人就中奖,如果这些人当中有中过奖的,就想下找 但实际上是每发现一个人中奖,就向下数N个人,如果这个人中过奖了,就向下找直到找到没中过奖的,然后再 ...

  8. 诛天者 pat basic 练习五十九 C语言竞赛

    题目: C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集-- ...

  9. 狂暴者 pat basic 练习二十一 个位数统计

    心得: 即使是数字字符,也要把它转成整型才能作为下标 题目: 给定一个 k 位整数 N=d​k−1​​10​k−1​​+⋯+d​1​​10​1​​+d​0​​ (0≤d​i​​≤9, i=0,⋯,k− ...

最新文章

  1. 工具推荐:Astah Community 绘制图形
  2. spring boot 启动 nested exception is java.lang.IllegalStateException
  3. 如何给女朋友解释并发与并行的区别?
  4. IE与Mozila FireFox 中的 JS
  5. java泛型程序设计——泛型类型的继承原则
  6. 水滴石穿C语言之extern声明辨析
  7. python常用函数import_python 常用函数集合
  8. linux参考文献_linux常用指令
  9. Kafka核心源码解析 - SocketServer源码解析
  10. 谷歌正式推出在线云储存服务Google Drive
  11. Windows Server2012 64位安装OpenSSH服务
  12. 【神经网络】激活函数的作用及常用激活函数
  13. 有关Stolz定理的推广和应用(吕文斌)
  14. 基于SSH开发报刊订阅管理系统的设计与实现
  15. R语言学习笔记之str函数
  16. 深入浅出-交接运维工作
  17. [GIS] 火星坐标GCJ-02的实质 | 高德地图的实际坐标系
  18. google map学习相关
  19. nodejs之pathinfo/pathname的使用
  20. javascript可以直接比较时间字符串的大小

热门文章

  1. Kettle: 数据库查询/数据库连接
  2. CANOE学习(5) CAPL简介
  3. 【相机标定】多相机无交叠视域图像拼接
  4. 利用脚本监控打印机的墨粉适用状况
  5. 部署Oracle数据库11g提高中型企业竞争力
  6. 关于EMC Unity 存储系统DIMM内存的几个问题
  7. Qt6 官网QtCreator 下载与安装方法win10
  8. 实现zotero使用onedrive同步
  9. backlog配置_tcp-backlog配置
  10. 清理SYSAUX表空间的WRH$_LATCH_CHILDREN表