ZOJ 1006 Do the Untwist

真的不知道这个题目。。。有什么意思。。

不想解释了。。

直接贴代码了。。想要的就拿去AC好了。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class DotheUntwist {

    public static void main(String[] args) {
        Scanner scaner = new Scanner(System.in);
        while(scaner.hasNextLine()){
            String inputStr = scaner.nextLine();
            String[] params = inputStr.split(" ");
            if(params.length ==1){
                break;
            }
            int key = Integer.parseInt(params[0]);
            String deciperStr = deciper(key,params[1]);
            System.out.println(deciperStr);
        }
    }
    private static String deciper(int key, String string) {
        List<Integer> ciperCode = new ArrayList<Integer>();
        List<Integer> plainCode = new ArrayList<Integer>();
        for(char c:string.toCharArray()){
            int code = convertToCode(c);
            ciperCode.add(code);
            plainCode.add(code);
        }
        for(int i=0;i<ciperCode.size();i++){
            int code = ciperCode.get(i);
            resolveCode(plainCode,i,key,code,ciperCode.size());
        }
       StringBuffer plainText = new StringBuffer();
        for(Integer i: plainCode){
            plainText.append(convertToChar(i));
        }
        return plainText.toString();
    }
    private static void resolveCode(List<Integer> plainCode, int i, int key, int code, int size) {
       int pos = (key*i)%size;
       plainCode.set(pos, (code+i)%28);
    }
    private static char convertToChar(int i){
        if(i>0 && i<27){
            return (char)(i+96);
        }
        if(i == 0){
            return '_';
        }
        if(i == 27){
            return '.';
        }
        return ' ';
    }
    private static int convertToCode(char ch){
        if(ch>=97 && ch<=122){
           return ch-96; 
        }
        
        if(ch == '_'){
            return 0;
        }
        
        if(ch == '.'){
            return 27;
        }
        return -1;
    }
}
 

猜你喜欢

转载自silentdusk.iteye.com/blog/1527251
ZOJ