AOJ : 0555 - 指輪 (Ring)

問題概要

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0555&lang=jp
日本語の問題文なので, 説明は省略.

アルゴリズム

指輪の文字列をrotateさせつつ, この中に目的の文字列が見つかるかを確かめます.
見つかればカウント.
Javaの方が書きやすいと判断したので, Javaでやってます.

プログラム

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String s = sc.next();
    int n = sc.nextInt();
    int ans = 0;

    while(n-- > 0){
      String ss = sc.next();
      int m = ss.length();

      while(m-- > 0){
        if(ss.contains(s)){
          ans++;
          break;
        }
        ss = ss.substring(1) + ss.charAt(0); //最初の文字を後ろにもっていく
      }
    }
    System.out.println(ans);
  }
}