Codeforces
来源:互联网 发布:hexo 知乎 编辑:程序博客网 时间:2024/06/05 14:13
点击打开题目链接
Santa Claus decided to disassemble his keyboard to clean it. After he returned all the keys back, he suddenly realized that some pairs of keys took each other's place! That is, Santa suspects that each key is either on its place, or on the place of another key, which is located exactly where the first key should be.
In order to make sure that he's right and restore the correct order of keys, Santa typed his favorite patter looking only to his keyboard.
You are given the Santa's favorite patter and the string he actually typed. Determine which pairs of keys could be mixed. Each key must occur in pairs at most once.
The input consists of only two strings s and t denoting the favorite Santa's patter and the resulting string. s and t are not empty and have the same length, which is at most 1000. Both strings consist only of lowercase English letters.
If Santa is wrong, and there is no way to divide some of keys into pairs and swap keys in each pair so that the keyboard will be fixed, print «-1» (without quotes).
Otherwise, the first line of output should contain the only integer k (k ≥ 0) — the number of pairs of keys that should be swapped. The following k lines should contain two space-separated letters each, denoting the keys which should be swapped. All printed letters must be distinct.
If there are several possible answers, print any of them. You are free to choose the order of the pairs and the order of keys in a pair.
Each letter must occur at most once. Santa considers the keyboard to be fixed if he can print his favorite patter without mistakes.
helloworldehoolwlroz
3h el od z
hastalavistababyhastalavistababy
0
merrychristmaschristmasmerry
-1
只需要加一个int类的vis数组来保存两个字符的相对关系即可。一开始一直卡第14个样例WA,最后字符转数组都在最后加了一个1就AC了.
附上AC代码:
#include<bits/stdc++.h>using namespace std;const int maxn=1000+5;string s,st;int vis[maxn],ss[maxn];int num=0,flag=1;int main(){ cin>>s>>st; for(int i=0;i<s.length();i++) { if(!vis[s[i]-'a'+1]&&!vis[st[i]-'a'+1]) { vis[s[i]-'a'+1]=st[i]-'a'+1; vis[st[i]-'a'+1]=s[i]-'a'+1; if(s[i]!=st[i])ss[num++]=s[i]-'a'+1; } else if(vis[s[i]-'a'+1]!=st[i]-'a'+1||vis[st[i]-'a'+1]!=s[i]-'a'+1) { flag=0;break; } } if(!flag)cout<<-1<<endl; else { cout<<num<<endl; for(int i=0;i<num;i++) printf("%c %c\n",ss[i]+'a'-1,vis[ss[i]]+'a'-1); } return 0;}
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 首次体验phonegap实现的Android APP
- Java学习【代码4.2】
- 剑指offer——矩形覆盖
- BAT 技术团队博客
- linux操作学习08:系统服务的控制(systemctl 命令)
- Codeforces
- LeetCode 500. Keyboard Row
- 【LeetCode】412.Fizz Buzz_EASY(四)
- spark2.1.0版本 SparkSQL相关内容的测试和学习
- 算法提高 11-1实现strcmp函数
- hibernate通过HibernateCallback()调用底层session
- sscanf基本用法
- 用 config drive 配置网络
- support-v4、support-v7 的依赖关系及 Getting java.util.zip.ZipException: duplicate entry exception 的处理