题目描述

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;ppRYYGrrYB225不能买,因为没有黑色珠子,并且少了一颗红色的珠子。

输入描述:
每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。

输出描述:
如果可以买,则在一行中输出“Yes”以及有多少多余的珠子;如果不可以买,则在一行中输出“No”以及缺了多少珠子。其间以1个空格分隔。

输入例子:
ppRYYGrrYBR2258
YrR8RrY

输出例子:
Yes 8

代码

疑问:注释部分的代码思路可以吗?
先吸收两个字符串,再一个一个push进入vector中

答:可以。见代码块二

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{/*char longstr[1000] = { 0 };char shortstr[1000] = { 0 };vector<char>longchar;vector<char>shortchar;scanf("%s%s", longstr, shortstr);int lenlong = strlen(longstr);int lenshort = strlen(shortstr);int i;for (i = 0; i < lenlong; i++){longchar.push_back(longstr[i]);}for (i = 0; i < lenshort; i++){shortchar.push_back(shortstr[i]);}*/vector <char> longchar;vector <char> shortchar;char keyBoard;//输入longchar数组,用回车结束while (keyBoard = getchar()){if (keyBoard == '\n')break;longchar.push_back(keyBoard);}//输入shortchar数组,用回车结束while (keyBoard = getchar()){if (keyBoard == '\n')break;shortchar.push_back(keyBoard);}//shortchar,longchar数组对比,删除longchar数组中与shortchar数组相同的元素  vector<char>::iterator iter1 = shortchar.begin();//短vector<char>::iterator iter2 = longchar.begin();//长for (; iter1 != shortchar.end(); ){iter2 = find(longchar.begin(), longchar.end(), *iter1);if (iter2 != longchar.end())//如果找到了{iter1 = shortchar.erase(iter1);//删除短iter2 = longchar.erase(iter2);//删除长}else{iter1++;}}if (shortchar.size() != 0)//如果short有剩余{cout << "No " << shortchar.size();}else if (shortchar.size() == 0){cout << "Yes " << longchar.size();}system("pause");
}

代码块2

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{char longstr[1000] = { 0 };char shortstr[1000] = { 0 };vector<char>longchar;vector<char>shortchar;scanf("%s%s", longstr, shortstr);int lenlong = strlen(longstr);int lenshort = strlen(shortstr);int i;for (i = 0; i < lenlong; i++){longchar.push_back(longstr[i]);}for (i = 0; i < lenshort; i++){shortchar.push_back(shortstr[i]);}//shortchar,longchar数组对比,删除longchar数组中与shortchar数组相同的元素 vector<char>::iterator iter1 = shortchar.begin();//短vector<char>::iterator iter2 = longchar.begin();//长for (; iter1 != shortchar.end(); ){iter2 = find(longchar.begin(), longchar.end(), *iter1);if (iter2 != longchar.end())//如果找到了{iter1 = shortchar.erase(iter1);//删除短iter2 = longchar.erase(iter2);//删除长}else{iter1++;}}if (shortchar.size() != 0)//如果short有剩余{cout << "No " << shortchar.size();}else if (shortchar.size() == 0){cout << "Yes " << longchar.size();}system("pause");
}

牛客网_PAT乙级_1028到底买不买(20)【用iterator迭代器,对两个vectorchar比较,删除相同元素】相关推荐

  1. 牛客网_PAT乙级_1019. 数字黑洞 (20)

    总结 注意!! 想要在函数中结束程序,一定不要用system("pause");,因为这样只是让程序暂停,结果就是运行时间超时,无法通过所有的测试用例. 那么,C++ 程序中什么函 ...

  2. 牛客网_PAT乙级_1022挖掘机技术哪家强(20)【class vector sort排序、删除重复元素】

    题目描述 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入描述: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每 ...

  3. 牛客网_PAT乙级_1010月饼 (25)

    因为黑框框里放不下,(非官网)测试用例用txt导入: 这题有一个陷阱,官网上说给非0数,测试用例却出现了0,0吨的月饼能卖507元,而且这样的月饼要最先卖,因为它的price是inf,卖掉0吨净赚50 ...

  4. 牛客网_PAT乙级_1029有几个PAT(25)【输入字符串并strlen计算长度】

    题目描述 字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位§,第4位(A),第6位(T):第二个PAT是第3位§,第4位(A),第6位(T). 现给定字符串, ...

  5. 牛客网_PAT乙级_1027在霍格沃茨找零钱(20)

    题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可, ...

  6. 牛客网_PAT乙级_1025插入与归并(25)

    题目描述 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序 ...

  7. 牛客网_PAT乙级_1026跟奥巴马一起编程(15)

    题目描述 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算 机科学教育周"正式启动,奥巴马编写了很简 ...

  8. 牛客网_PAT乙级_10234有理数四则运算(20)【通过5/7:格式错误】

    题目描述 本题要求编写程序,计算2个有理数的和.差.积.商. 输入描述: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整 ...

  9. 牛客网_PAT乙级_1023旧键盘打字(20)【别人代码里用到的hash是啥】

    心得 关于如何找到个别测试点通不过的原因: 复制别人的正确的代码,和自己的代码运行相同的测试用例,比较两者之间的区别 ??别人代码里用到的hash是啥?? 题目描述 旧键盘上坏了几个键,于是在敲一段文 ...

最新文章

  1. sl中几个简单变量的获取
  2. git报错:Pull is not possible because you have unmerged files解决方法
  3. 推荐系统个人理解(理论部分)
  4. 优秀的网工都会NAT
  5. 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.3 语句分离器
  6. php 剪贴板,之Windows中的剪贴板
  7. java hh mm ss_【Java基础】比较时间大小(以HH:mm:ss格式为例)
  8. Android单元测试研究与实践
  9. securecrt 乱码_SecureCRT远程连接Linux,配置端点和字节码
  10. 开源音乐播放器_如何选择开源音乐播放器
  11. python递归函数入门教程_Python递归函数
  12. 7. 生信技能树——TCGA癌症数据2
  13. Android——Binder机制
  14. ppt画图画不下——调整ppt页面的大小
  15. GPS坐标系转换(标准坐标系WGS84转GCJ-02火星坐标系)
  16. 普渡大学计算机图形,普渡大学计算机图形学技术研究生语言及申请要求-费用-课程设置...
  17. matlab如何打开dcm_Matlab绘图简明手册
  18. 天天生鲜项目——用户信息页
  19. 高效偏振无关透射光栅的分析与设计
  20. JAVA安全基础知识

热门文章

  1. a律13折线pcm编码例题_a律13折线pcm编码例题
  2. 机器学习-关联之FP-Growth算法原理及实战
  3. 工资管理信息系统java_java+sql server,工资管理信息系统,源程序+数据库+报告
  4. 干货 | Elasticsearch开发人员最佳实战指南
  5. 解析腾讯云音视频通信三大核心网络技术实战与创新
  6. 【音频技术:逼近人耳极限】
  7. Spotify是如何调整CDN服务来实现闪电般的快速流媒体体验
  8. 第三章 Spark运行模式及原理
  9. Java基础之String,StringBuilder,StringBuffer三者的区别
  10. 理解音视频 PTS 和 DTS