AOJ2281 Swap Cipher
問題リンク Swap Cipher
- 解法
暗号化の逆順で復号化するだけです。
- ソース
import java.util.Scanner; //Swap Cipher public class AOJ2281 { void run(){ Scanner sc = new Scanner(System.in); for(;;){ int n = sc.nextInt(); if(n==0)break; char[] s = sc.next().toCharArray(); int[][] swap = new int[n][2]; for(int i=0;i<n;i++)for(int j=0;j<2;j++)swap[i][j]=sc.nextInt()-1; for(int i=n-1;i>=0;i--){ int a = swap[i][0]; int b = swap[i][1]; int d = b-a; s[a] = (char)((s[a]-'a'+d)%26+'a'); s[b] = (char)((s[b]-'a'+d)%26+'a'); char t = s[a]; s[a] = s[b]; s[b] = t; } System.out.println(new String(s)); } } public static void main(String[] args) { new AOJ2281().run(); } }