http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=9
题目大意
在大学里,很多单词都是一词多义,偶尔在文章里还要用引申义。这困扰Redraiment很长的时间。
他开始搜集那些单词的所有意义。他发现了一些规律,例如
“a”能用“e”来代替, “c”能用“f”来代替……
现在他给出了字母的替换规则,如下所示,A被E替换,B被C替换,依次类推。
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
E C F A J K L B D G H I V W Z Y M N O P Q R S T U X
a b c d e f g h i j k l m n o p q r s t u v w x y z
e r w q t y g h b n u i o p s j k d l f a z x c v m
本题包括多组测试数据。
每组测试数据为一行:为仅由字母和空格组成的字符串(空格不变)。
输入以单行“#”结束。
对应每组测试数据,替换后输出它的引申义。
Sample Input
Ilttabaje zaujljg
#
Sample Output
Different meaning
方法与总结
- 定义两组映射关系,然后对应输出即可
代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string up="ECFAJKLBDGHIVWZYMNOPQRSTUX";
string low="erwqtyghbnuiopsjkdlfazxcvm";
string s;
while(getline(cin,s))
{
if(s=="#")
break;
for(int i=0;i<s.length();i++)
{
if(s[i]>='a' && s[i]<='z')
cout<<low[s[i]-'a'];
else if(s[i]>='A' && s[i]<='Z')
cout<<up[s[i]-'A'];
else cout<<s[i];
}
cout<<endl;
}
return 0;
}