3007(AOJ 1142):Organize Your Train part II

keyword

シミュレーション Java

概要

列車を2つに分割し、分割したそれぞれを反転させても良いし、前後を入れ替えて連結してもよい。全部で何種類のパターンができるか求める問題。
サイズが小さいので全パターンを列挙すればよい。易しめの実装ゲー。

import java.util.*;

class Main {

	public static void main(String args[]){
		Scanner in = new Scanner(System.in);
		int rept = in.nextInt();
		for(int loop=0; loop<rept; loop++){
			String train = in.next();
			HashSet<String> set = new HashSet<String>();
			int n = train.length();
			for(int i=1; i<n; i++){
				String pre = train.substring(0,i);
				String post= train.substring(i);
				String rpre = new StringBuffer(pre).reverse().toString();
				String rpost = new StringBuffer(post).reverse().toString();
				set.add(pre.concat(post));
				set.add(pre.concat(rpost));
				set.add(rpre.concat(post));
				set.add(rpre.concat(rpost));
				set.add(post.concat(pre));
				set.add(post.concat(rpre));
				set.add(rpost.concat(pre));
				set.add(rpost.concat(rpre));
			}
			System.out.println(set.size());
		}
	}

}