1. 自己写的
思路跟正确答案一样,就是用数组存储,然后计数。但是我用了76位的数组,不明原因就是答案错误
#include<iostream>
using namespace std;
#include<string>
int main(){
//cout << '1' - '0'<<" "<< 'z' - '0'<<" " << 'a' - '0' ;
int laoban[76] = {0};
string a, b;
cin >> a;
for(int i = 0; i < a.length(); i++){
int temp = a[i] - '0';
laoban[temp] += 1;
}
cin >> b;
for(int i = 0; i < b.length(); i++){
int temp = b[i] - '0';
laoban[temp] -= 1;
}
int queshao, duoyu;
for(int i = 0; i < 76; i++){
if(laoban[i] < 0){
queshao += laoban[i];
}
duoyu += laoban[i];
}
if(queshao < 0){
printf("No %d", -queshao);
}
else{
printf("Yes %d", duoyu);
}
return 0;
}
2. 借鉴的
https://www.jianshu.com/p/db7a5a7fef39
#include <stdio.h>
int main()
{
char c;
int record[128] = {0};
while((c = getchar()) != '\n') record[(int)c]++;
while((c = getchar()) != '\n') record[(int)c]--;
int more = 0, less = 0;
for(int i = 0; i < 128; i++){
if(record[i] < 0) less += record[i]; // 改成less += record[i], 判断less 小于0, 提交失败。额, 要写成-less啊
if(record[i] > 0) more += record[i];
}
if(less<0) printf("No %d", -less);
else printf("Yes %d", more);
return 0;
}