您的位置:首页 > 其它

POJ2159解题报告

2015-03-07 00:00 453 查看
英文题鸭梨山大。读了很久题才读明白,但是没有看到重要的地方,导致WA。
主要题意就是介绍2种加密方式,第一种是将每个字母ascii加相同的值(注意,不一定加1,只是例子是加1),超过Z返回A。
第二种就是将字符串打乱(不一定是按照题干的序列打乱)。
然后这个题就是统计一下各个字符出现的频率的序列是否相同就可以了。而不被在意那些字符是什么频率。这个方法可能不是对所有的数据都判断正确,不过还是AC了。
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//freopen("1.txt", "r",stdin);
string str1, str2;
cin >> str1 >> str2;
if(str2.size() != str1.size())
{
cout << "NO" << endl;
return 0;
}
map<char, int> charMap1;
map<char, int> charMap2;
for(size_t i = 0; i < str1.size(); ++i)
charMap1[str1[i]]++;
for(size_t i = 0; i < str2.size(); ++i)
charMap2[str2[i]]++;
vector<int> vec1, vec2;
for(map<char, int>::iterator it = charMap1.begin(); it != charMap1.end(); ++it)
vec1.push_back((*it).second);
for(map<char, int>::iterator it = charMap2.begin(); it != charMap2.end(); ++it)
vec2.push_back((*it).second);
sort(vec1.begin(), vec1.end());
sort(vec2.begin(), vec2.end());
if(vec1 == vec2)
cout << "YES" << endl;
else
cout << "NO" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: