题目描述
一种常见的打字错误是将手放在键盘上正确位置的右侧相邻的一位,如下图所示:
键盘示意图
例如,键入“Q”却按成了“W”,“J”被按成“K”,要求你编程对纠正上述的错误
输入
输入文件包含多行,每行可能会包含数字、空格、大写字母(不包括“A”、“Z”、“Q”)和标点符号(不包括单引号“’”)。所有标记了单词的按键不不包括在内,如Tab、BackSpace、Control等。
输出
将每个字母或标点符号用它左边的符号替换,输入中的空格按原样输出。
样例输入
O S,GOMR YPFSU/ 234567890-=WERTYYUIOP[]
样例输出
I AMFINE TODAY. 1234567890-QWERTTYUIOP[
AC代码:
#include<bits/stdc++.h>
using namespace std;
string s = "`1234567890-=QWERTYUIOP[]\ASDFGHJKL;ZXCVBNM,./";
int main()
{
string str;
while(getline(cin,str))
{
for(int i=0;i<str.length();i++)
{
if(str[i]==' ') cout<<str[i];
else cout<<s[s.find(str[i])-1];
}
cout<<endl;
}
return 0;
}
思路总结: 打表,然后运用了C++库函数 find
s.find(args) 查找 s 中 args 第一次出现的位置,并返回其索引值