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;
}
本文探讨了使用C++进行字符串比较的两种不同方法。一种是通过自定义的数组存储和计数字符频率,另一种则是利用标准输入输出流进行字符频率记录。通过对比这两种方法,文章揭示了在实际应用中可能遇到的常见错误,并提供了有效的解决方案。

被折叠的 条评论
为什么被折叠?



