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