题目
思路
用map记录每个字符各有多少个,然后依次查找有没有想要的字符,分为两种情况:1.找到了,要看数量够不够;2,未找到;用一个变量存储不够的字符数即可
代码
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){
string s1,s2;
cin >> s1 >> s2;
map<char,int> mp1,mp2;
for(char e : s1) mp1[e]++;
for(char e : s2) mp2[e]++;
int ans = 0;
for(auto beg=mp2.begin(); beg!=mp2.end(); ++beg){
//如果找到,但数量不够,则记录差几个,ans记录差几个
if(mp1.find(beg->first) != mp1.end()){
if(mp1[beg->first] < beg->second)
ans = ans - mp1[beg->first] + beg->second;
}
//如果没有找到
else{
ans = ans + beg->second;
}
}
if(ans == 0) cout << "Yes" << " " << s1.size()-s2.size();
else cout << "No" << " " << ans;
return 0;
}