この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 件のコメント:
コメントを投稿