//732K 938MS G++
//228K 188MS C++
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct Node {
int array1AppearTime;
int array2AppearTime;
};
typedef struct Node Node;
Node charAppearTime[26];
char str1[1000];
char str2[1000];
int ABS(int a) {
return a > 0? a: -a;
}
int getMinDistance(char * str1, char * str2) {
memset(charAppearTime, 0, sizeof(charAppearTime));
// printf("STR: %s %s\n", str1, str2);
int L = strlen(str1);
for (int i = 0; i < strlen(str1); i++) {
// printf("%c %c\n", str1[i], str2[i]);
(charAppearTime[str1[i]-'a'].array1AppearTime) += 1;
// printf("%d\n", charAppearTime[str1[i]].array1AppearTime);
// (charAppearTime[str2[i]].array2AppearTime) += 1;
}
for (int i = 0; i < strlen(str2); i++) {
(charAppearTime[str2[i]-'a'].array2AppearTime) += 1;
// printf("%d\n", charAppearTime[str2[i]].array2AppearTime);
}
int D = 0;
for (int i = 0; i <= 25; i++) {
// printf("%d %d\n", charAppearTime[i].array1AppearTime, charAppearTime[i].array2AppearTime);
D += ABS(charAppearTime[i].array1AppearTime - charAppearTime[i].array2AppearTime);
}
return D;
}
int caseNum;
int main() {
scanf("%d", &caseNum);
cin.get();
for (int i = 1; i <= caseNum; i++) {
cin.getline(str1, 1000);
cin.getline(str2, 1000);
int d = getMinDistance(str1, str2);
printf("Case #%d: %d\n", i, d);
}
}
水题,朴素解法,g++ 险过....., c++ 188ms.... 这效率差的....简单的charMap.