Edward, a poor copy typist, is a user of the Dvorak Layout. But now he has only a QWERTY Keyboard with a broken Caps Lock key, so Edward never presses the broken Caps Lock key. Luckily, all the other keys on the QWERTY keyboard work well. Every day, he has a lot of documents to type. Thus he needs a converter to translate QWERTY into Dvorak. Can you help him?
The QWERTY Layout and the Dvorak Layout are in the following:
The QWERTY Layout |
---|
|
The Dvorak Layout |
---|
|
A QWERTY document Edward typed. The document has no more than 100 kibibytes. And there are no invalid characters in the document.
<h4< dd="">The Dvorak document.
<h4< dd="">Jgw Gqm Andpw a H.soav Patsfk f;doe Nfk Gq.d slpt a X,dokt vdtnsaohe Kjd yspps,glu pgld; aod yso kd;kgluZ 1234567890 `~!@#$%^&*()}"']_+-=ZQqWEwe{[\| ANIHDYf.,bt/ ABCDEFuvwxyz<h4< dd="">
Hi, I'm Abel, a Dvorak Layout user. But I've only a Qwerty keyboard. The following lines are for testing: 1234567890 `~!@#$%^&*()+_-={}[]:"'<>,.?/\| ABCDEFuvwxyz AXJE>Ugk,qf;
题意:
键盘的位置被打乱了给你一串字符让你输出打乱以后的字符
我们用两个数组分别存储两个字符串
char x[155]={"_-+=QqWwEeRrTtYyUuIiOoPp{[}]AaSsDdFfGgHhJjKkLl:;\"'ZzXxCcVvBbNnMm<,>.?/"};
char y[155]={"{[}]\"'<,>.PpYyFfGgCcRrLl?/+=AaOoEeUuIiDdHhTtNnSs_-:;QqJjKkXxBbMmWwVvZz"};
然后找出对应的位置替换就好了
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char x[155]={"_-+=QqWwEeRrTtYyUuIiOoPp{[}]AaSsDdFfGgHhJjKkLl:;\"'ZzXxCcVvBbNnMm<,>.?/"};
char y[155]={"{[}]\"'<,>.PpYyFfGgCcRrLl?/+=AaOoEeUuIiDdHhTtNnSs_-:;QqJjKkXxBbMmWwVvZz"};
int num(char c)
{
for(int i=0;i<70;i++)
{
if(x[i]==c)
return i;
}
return -1;
}
int main()
{
char s[100003];
/* for(int i=0;i<71;i++)
printf("%c",x[i]);
printf("\n");
for(int j=0;j<71;j++)
printf("%c",y[j]);
printf("\n");
*/while(gets(s))
{
int l=strlen(s);
for(int i=0;i<l;i++)
{
if(num(s[i])==-1)
printf("%c",s[i]);
else printf("%c",y[num(s[i])]);
}
printf("\n");
}
}