ICPC2006 国内予選

Domestic

B:列車の編成パートII

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1142
文字列をそれぞれの箇所で分割してaとbに格納してaを元の順とreverse、bを元の順とreverseで連結したケースをHashSetに入れてsetのサイズを答える。

import java.util.Scanner;
import java.util.HashSet;

public class Domestic2006_B{
	private static final Scanner sc=new Scanner(System.in);
	
	public static void main(String[] args){
		int n=sc.nextInt();
		while((n-=1)!=-1){
			String s=sc.next();
			HashSet<String> set=new HashSet<String>();
			for(int i=1;i<s.length();i++){
				String a=s.substring(0,i);
				String b=s.substring(i,s.length());
				set.add(a+b);
				set.add(b+a);
				set.add(rev(a)+rev(b));
				set.add(rev(b)+rev(a));
				set.add(a+rev(b));
				set.add(rev(a)+b);
				set.add(b+rev(a));
				set.add(rev(b)+a);
			}
			System.out.println(set.size());
		}
	}
	
	static String rev(String str){
		StringBuilder build=new StringBuilder();
		build.append(str);
		build.reverse();
		return build.toString();
	}
}