这甚至比B组的题还水, 直接用map模拟一遍。
长度不一样直接返回0,一个是数字一个是字母返回0.
其他的用map判断一下。
复杂度O(TNlogN);
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <map> using namespace std; inline int read() { int res=0;char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48), ch=getchar(); return res; } #define reg register int T; map <char, char> mp; int main() { freopen("copycat.in", "r", stdin); freopen("copycat.out", "w", stdout); T = read(); while(T--) { mp.clear(); string a, b; getline(cin, a);getline(cin, b); int la = a.length(), lb = b.length(); if (la != lb) {puts("0");continue;} for (reg int i = 0 ; i < la ; i ++) { if (a[i] == b[i]) continue; if (a[i] < 'a' or a[i] > 'z' or b[i] < 'a' or b[i] > 'z') if (a[i] != b[i]) {puts("0");goto End;} if (!mp[a[i]]) mp[a[i]] = b[i]; else if (mp[a[i]] != b[i]) {puts("0");goto End;} } puts("1"); End:; } return 0; }