OKOK,先看看题目描述
时间限制:1秒 内存限制:128M
题目描述
小可非常粗心,打字的时候将手放到了比正确位置偏右的一个位置,因此,Q打成了W,E打成了R,H打成了J等等。键盘如下所示
现在给你若干行小可打字的结果,请你还原成正确的文本。
输入描述
若干行字符,每行字符串中可能包含大写字母、字符、数字、空格、或者上面键盘中的标点符号。
带单词标签(比如Control、Enter、Tab等)的按键不会出现。同时,最左侧的`QAZ这四种字符也不会出现。
保证不会出现空行,并且字符的总量不超过105105。
输出描述
如题,将输入的所有文本还原成正确的文本。空格保持不变。保证所有的字母都是大写字母。
样例输入
O S, GOMR YPFSU/
[[-=,.M
样例输出
I AM FINE TODAY.
PP0-M,N
要先打表,可以用char 类型打表,也可以用string 类型打标,char 类型打表很麻烦,可以用string 例如
string ans="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
而char类型就得跟正常赋值一样十分麻烦。
题目很简单,就是把前面的字母输入成了后一个(若想输出\必须要输入两个\)
AC代码 奉上
#include<bits/stdc++.h>
using namespace std;
int main(){
string ans="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
string s;
while(getline(cin,s)){
int len=s.size();
for(int i=0;i<len;i++){
if(s[i]==' ') continue;
int pos=ans.find(s[i]);
s[i]=ans[pos-1];
}
cout<<s<<"\n";
}
return 0;
}
解决 关注我