题目
题目大意
Eva想要买珠子,但是只能按串买。如果串上有她想要买的所有珠子,那么输出“Yes”,再输出需要额外买几个珠子。如果串上缺少她想要的珠子,那么输出“No”,并输出缺少的珠子个数。其中,s1是商店中的串,s2是Eva想要买的串。
思路
和1084差不多,外循环遍历s2,内循环用find()函数查找s1中是否有该字符。如果有的话就在s1中删除该字符。
代码
#include <iostream>
#include <string>
using namespace std;
int main(){
string s1, s2;
cin >> s1 >> s2;
int flag = 0; // 是否缺失
int num = 0; // 缺失的个数
int extra = (int)s1.size() - (int)s2.size(); // 需要额外购买的数量
for (int i = 0; i < (int)s2.size(); i++){
int pos = s1.find(s2[i]);
if (pos == -1){
flag = 1;
num++;
}else{
s1.erase(pos, 1);
}
}
if (flag == 0){
cout << "Yes " << extra << endl;
}else{
cout << "No " << num << endl;
}
return 0;
}