uvalive 3213 Ancient Cipher
https://vjudge.net/problem/UVALive-3213
题意:
输入两个字符串,问是否可以由第一个字符串的每个字符一一映射得到第二个字符串,字符是可以随意移动的。
思路:
统计两个字符串每个字符出现的频数,再进行排序,如果频数序列相同,那么就证明可以。
代码:
#include <stdio.h> #include <string.h> #include <string> #include <iostream> #include <algorithm> #include <map> using namespace std; int x[110],y[110]; int main() { string a,b; while (cin >> a >> b) { bool f = 0; memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); for (int i = 0;i < a.length();i++) { x[a[i]]++; y[b[i]]++; } sort(x,x+110); sort(y,y+110); for (int i = 0;i < 110;i++) { if (x[i] != y[i]) { f = 1; break; } } if (f) cout << "NO\n"; else cout << "YES\n"; } return 0; }
康复训练中~欢迎交流!