UVA10082 WERTYU(洛谷-UVA10082)
UVA10082 WERTYU(洛谷-UVA10082)
题目描述
有人打字的时候手整体往右挪了一格,本来要按左边的键,结果按到右边那个键了。现在给你一段打错后的文本,你要把每个字符还原成它键盘左边的字符,空格不用改,其他所有字母、标点、数字全部往左挪一位输出。
输入格式
输入由若干行文本组成。每行可能包含数字、空格、大写字母(除了 Q、A、Z),或者上方显示的标点符号(不包括反引号 ‘)。带有单词标签的按键(Tab,BackSp,Control 等)不会出现在输入中。
输出格式
你需要将每个字母或标点符号替换为在上方所示的 QWERTY 键盘上其左边的字符。输入中的空格在输出中应保持不变。
输入输出样例
输入 #1复制运行
OS,GOMRYPFSU/输出 #1复制运行
IAMFINETODAY.题目分析与解题思路
先把键盘所有有效字符按从左到右、从上到下拼成一个总字符串;
循环读取所有输入行;
逐个遍历每个字符:
- 如果是空格,直接拼到结果里;
- 如果不是空格,找到它在键盘字符串里的位置,取左边一位字符拼接
完整代码
importjava.util.Scanner;publicclassKeyboard{publicstaticvoidmain(String[]args){//定义完整键盘字符序列Stringkeyboard="`1234567890-=QWERTYUIOP[]\\ASDFFGHJKL;'ZXCVBNM,./";Scannerscanner=newScanner(System.in);while(scanner.hasNextLine()){Stringline=scanner.nextLine();Stringoutput="";for(inti=0;i<line.length();i++){charc=line.charAt(i);if(c==' '){output=output+c;}else{intn=keyboard.indexOf(c);charleftChar=keyboard.charAt(n-1);output=output+leftChar;}}System.out.println(output);}scanner.close();}}