狂暴者 pat basic 练习二十九 旧键盘
心得:
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 练习二十九 旧键盘相关推荐
- 狂暴者 pat basic 练习二十六 程序运行时间
心得: 1.隐式类型转换有两种: (1)赋值语句 float a, int b=2; a=b;b自动升级(不过java输出a是2.0,而c++还是2) (2)算术表达式 float a, int b ...
- 狂暴者 pat basic 练习二十五 反转链表
心得: 1.map还分为普通map和unordered_map,map需要根据key进行排序,而un不要,所以un更快一些 2.除了map.insert()方法能插入数据外,还有一种中括号赋值的方式更 ...
- 狂暴者 pat basic 练习二十四 科学计数法
心得: 对待问题时找规律,以分解的思想看问题 题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数 ...
- 狂暴者 pat basic 练习二十八 人口普查 测试点3格式错误
心得: 1.学习的时候要把以前的经验都牢记于心,比如"优先级不等比较法","字符串分割法" 2.结构体传参也是有传值和传址之分,和基本类型一样,不用指针传的是拷 ...
- 狂暴者 pat basic 练习二十二 D进制的A+B 测试点2,3,4原因
心得: 在题目要求的数据大小接近int范围时(2^31-1),最好考虑不要用整型了,其实long的定义只要求不比int小,而现在基本上都是64位机,int和long都是4个字节的,所以long也不要用 ...
- 黎明者 pat basic 练习八十九 狼人杀-简单版
心得: 这一题和第八十八题一样,考的是枚举 所谓枚举,就是尝试每一种可能的情况 先假设某种情况是对的,然后再查看在这种情况下,已知的条件是否是符合说明 就是对每种可能使用反证法 题目: 以下文字摘自& ...
- 心眼者 pat basic 练习六十九 微博转发抽奖
心得: 这一题很坑人,本以为它是从起始的下标开始,从N个人就中奖,如果这些人当中有中过奖的,就想下找 但实际上是每发现一个人中奖,就向下数N个人,如果这个人中过奖了,就向下找直到找到没中过奖的,然后再 ...
- 诛天者 pat basic 练习五十九 C语言竞赛
题目: C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集-- ...
- 狂暴者 pat basic 练习二十一 个位数统计
心得: 即使是数字字符,也要把它转成整型才能作为下标 题目: 给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k− ...
最新文章
- 工具推荐:Astah Community 绘制图形
- spring boot 启动 nested exception is java.lang.IllegalStateException
- 如何给女朋友解释并发与并行的区别?
- IE与Mozila FireFox 中的 JS
- java泛型程序设计——泛型类型的继承原则
- 水滴石穿C语言之extern声明辨析
- python常用函数import_python 常用函数集合
- linux参考文献_linux常用指令
- Kafka核心源码解析 - SocketServer源码解析
- 谷歌正式推出在线云储存服务Google Drive
- Windows Server2012 64位安装OpenSSH服务
- 【神经网络】激活函数的作用及常用激活函数
- 有关Stolz定理的推广和应用(吕文斌)
- 基于SSH开发报刊订阅管理系统的设计与实现
- R语言学习笔记之str函数
- 深入浅出-交接运维工作
- [GIS] 火星坐标GCJ-02的实质 | 高德地图的实际坐标系
- google map学习相关
- nodejs之pathinfo/pathname的使用
- javascript可以直接比较时间字符串的大小