temppos:録画サブ文字列の開始インデックス
一覧:重複した部分文字列を格納
パブリッククラスRepeatString {
プライベートの静的な無効longestdupString(Stringを){
IF(S == NULL || s.length()== 0){
リターン;
}
チャーTEMP = s.charAt(0)。
int型temppos = 0;
一覧<文字列>リスト=新しいのArrayList <文字列>();
以下のために(; I <s.length(); INT iが1 = I ++){
(I == s.length()-1)であれば{
IF(はlist.size()== 0){
(S)list.add。
ブレーク;
}そうしないと {
IF((I + 1 - temppos)> list.get(0).LENGTH()){
list.clear();
list.add((tempposをs.substring、I + 1))。
}そうであれば((I + 1 - temppos)== list.get(0).LENGTH()){
list.add((tempposをs.substring、I + 1))。
}そうしないと {
}
}
}
IF(s.charAt(I)== TEMP){
継続する;
}
IF(はlist.size()== 0){
list.add(s.substring(temppos、I));
} そうしないと {
IF(式(I - temppos)> list.get(0).LENGTH()){
list.clear();
list.add(s.substring(temppos、I));
}そうであれば((I - temppos)== list.get(0).LENGTH()){
list.add(s.substring(temppos、I));
}そうしないと {
}
}
温度= s.charAt(I)。
temppos = I;
}
ため(; I <はlist.size(); INT iが0 = I ++){
System.out.println(list.get(I));
}
}
パブリック静的無効メイン(文字列[] args){
longestdupString( "aaaaabbcaadddddseefgfsggggsssss");
}