UVA 156 Ananagramsシミュレーション+文字列処理


各単語をすべて小文字に変換し、各単語について、そのアルファベットが並べ替えられた後に得られた単語がすべての入力された単語に現れたかどうかを見て、現れなければ、元の単語を出力します.出力するすべての単語を辞書順に並べて出力します.
考え方:
辞書として入力された単語ごとに文字を並べ替え、mapをkeyとして格納し、valueを1に設定して、この再配置が存在することを説明します.
次に,各入力単語について考察し,同様に文字を並べ替え,mapを用いて既に出現しているか否かをチェックし,これに基づいて出力しているか否かを判断すればよい.
package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;



public class Test{	
	static HashMap map = new HashMap();
	static ArrayList arr = new ArrayList();
	
	public static void main(String[] args) {		
		Scanner sc = new Scanner(System.in);
		String line = null;
		System.out.println("input:");
		while(!"".equals((line=sc.nextLine().toLowerCase()))){
			char[] temp = line.toCharArray();
			Arrays.sort(temp);
			map.put(Arrays.toString(temp), 1);	
		}
		System.out.println("find:");
		while(!"".equals((line=sc.nextLine().toLowerCase()))){
			char[] temp = line.toCharArray();
			Arrays.sort(temp);
			if(map.get(Arrays.toString(temp))==null){
				map.put(Arrays.toString(temp), 1);	
				arr.add(line);
			}			
		}		
		sc.close();
		System.out.println(arr);
	}
}