给定两个串,看一个是否可以通过替换以及位置移动操作来得到第二个。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int aNo = 26;
int main()
{
#ifndef UVa
FILE *fp;
freopen_s(&fp, "data.in.txt", "r", stdin);
#endif
string sPlate;
string sMsg;
int pArr[aNo];
int mArr[aNo];
while (cin >> sPlate >> sMsg) {
for (int i = 0; i < aNo; i++) {
pArr[i] = 0;
mArr[i] = 0;
}
for (string::iterator iter = sPlate.begin(); iter != sPlate.end(); ++iter)
pArr[*iter - 65]++;
for (string::iterator iter = sMsg.begin(); iter != sMsg.end(); ++iter)
mArr[*iter - 65]++;
sort(pArr, pArr + aNo);
sort(mArr, mArr + aNo);
bool get = true;
for (int i = 0; i < aNo; ++i)
if (pArr[i] != mArr[i]) {
get = false;
break;
}
if (get)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}