首页 > 代码库 > LA 3213 古老的密码
LA 3213 古老的密码
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=15&page=show_problem&problem=1214
题意:
给定两个字符串,通过交换位置和一一映射判断能否使得两个字符串相同。
思路:
这题训练指南说得不准确,没有说到交换位置这一条件。既然可以交换位置,那我们只需要统计每个字符串中每个字母出现的次数,只要两个字符串中字母数相同并且出现次数也相同那就一定能转换成功。
1 #include<iostream> 2 #include<algorithm> 3 #include<string> 4 #include<cstring> 5 using namespace std; 6 7 char s1[105], s2[105]; 8 int p1[26], p2[26]; 9 10 int main()11 {12 ios::sync_with_stdio(false);13 //freopen("D:\\txt.txt", "r", stdin);14 while (cin >> s1)15 {16 cin >> s2;17 int len1 = strlen(s1);18 int len2 = strlen(s2);19 memset(p1, 0, sizeof(p1));20 memset(p2, 0, sizeof(p2));21 for (int i = 0; i < len1; i++)22 p1[s1[i] - ‘A‘]++;23 for (int i = 0; i < len2; i++)24 p2[s2[i] - ‘A‘]++;25 sort(p1, p1 + 26);26 sort(p2, p2 + 26);27 int flag = 1;28 for (int i = 0; i < 26;i++)29 if (p1[i] != p2[i])30 {31 flag = 0;32 break;33 }34 if (flag) cout << "YES" << endl;35 else cout << "NO" << endl;36 }37 }
LA 3213 古老的密码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。