WERTYU问题是ACM经典问题,假设键盘输入字母时每个字母都后移了一位(或N位),怎么把输入者要输入的真正字符串恢复过来的问题。 

    如给定一个输入O S, GOMR YPFSU/,需要返回输出:I AM FINE TODAY.,最容易想到的解法是使用switch,但这样写太麻烦,键盘上几十个字符需要判断几十次,因此,可以采用后移数组下标的方式。


    import java.util.Scanner;
    public class WERTYU {
    	private static String keyString = "`1234567890-=QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./";
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		String inputString = in.nextLine();
    		char[] inputChars = inputString.toCharArray();
    		char[] keyChars = keyString.toCharArray();
    		for(int i = 0; i<inputChars.length; i++){
    			char inputChar = inputChars[i];
    			if(inputChar != ' '){
    				inputChars[i] = keyChars[keyString.indexOf(inputChars[i]) - 1];
    			}
    		}
    		in.close();
    		System.out.println(String.valueOf(inputChars));
    	}
    }


    本文为风林火山博客原创,转载请注明出处:www.flcoder.com