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(); } }