2011年8月29日月曜日

TopCoder SRM222 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。

入力の文字列inputが与えられたときに、2回以上同じ文字列が現れる文字列の中で、最長になる文字列を返せ。なお、文字列inputの長さの上限は50であり、文字列に利用可能な文字は小文字、大文字のアルファベットのみとする。

私の解答はこちら。

public class TextCompressor {
 public String longestRepeat(String sourceText) {
  for( int i=sourceText.length()/2 ; i>0 ; i-- ){
   for( int j=0 ; j<sourceText.length()-i ; j++ ){
    String tar = sourceText.substring(j, j+i);
    if( sourceText.substring(j+i).contains(tar) ) return tar;
   }
  }
  return "";
 }
}

実はSRM198の問題とコードはほとんど同じ。返す値が最長の文字列そのものか、その長さなのかという違いぐらいしかないというオチ。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計