public class Main
{
public static String getLongestSubstringNoRepeats
( String string
) { int iLongestSoFar = 0 ;
int posLongestSoFar = 0 ;
char charPrevious = 0 ;
int xCharacter = 0 ;
int iCurrentLength = 0 ;
while ( xCharacter < string.length ( ) ) {
char charCurrent = string.charAt ( xCharacter ) ;
iCurrentLength++;
if ( charCurrent == charPrevious ) {
if ( iCurrentLength > iLongestSoFar ) {
iLongestSoFar = iCurrentLength;
posLongestSoFar = xCharacter;
}
iCurrentLength = 1 ;
}
charPrevious = charCurrent;
xCharacter++;
}
if ( iCurrentLength > iLongestSoFar ) {
return string.substring ( posLongestSoFar ) ;
} else {
return string.substring ( posLongestSoFar, posLongestSoFar + iLongestSoFar ) ;
}
}
public static void main
( String [ ] args
) {
System .
out .
println ( getLongestSubstringNoRepeats
( "BABGAKKGIMN" ) ) ; }
}
cHVibGljIGNsYXNzIE1haW4KewpwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRMb25nZXN0U3Vic3RyaW5nTm9SZXBlYXRzKCBTdHJpbmcgc3RyaW5nICl7CiAgICBpbnQgaUxvbmdlc3RTb0ZhciA9IDA7CiAgICBpbnQgcG9zTG9uZ2VzdFNvRmFyID0gMDsKICAgIGNoYXIgY2hhclByZXZpb3VzID0gMDsKICAgIGludCB4Q2hhcmFjdGVyID0gMDsKICAgIGludCBpQ3VycmVudExlbmd0aCA9IDA7CiAgICB3aGlsZSggeENoYXJhY3RlciA8IHN0cmluZy5sZW5ndGgoKSApewogICAgICAgIGNoYXIgY2hhckN1cnJlbnQgPSBzdHJpbmcuY2hhckF0KCB4Q2hhcmFjdGVyICk7CiAgICAgICAgaUN1cnJlbnRMZW5ndGgrKzsKICAgICAgICBpZiggY2hhckN1cnJlbnQgPT0gY2hhclByZXZpb3VzICl7CiAgICAgICAgICAgIGlmKCBpQ3VycmVudExlbmd0aCA+IGlMb25nZXN0U29GYXIgKXsKICAgICAgICAgICAgICAgIGlMb25nZXN0U29GYXIgPSBpQ3VycmVudExlbmd0aDsKICAgICAgICAgICAgICAgIHBvc0xvbmdlc3RTb0ZhciA9IHhDaGFyYWN0ZXI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaUN1cnJlbnRMZW5ndGggPSAxOwogICAgICAgIH0KICAgICAgICBjaGFyUHJldmlvdXMgPSBjaGFyQ3VycmVudDsKICAgICAgICB4Q2hhcmFjdGVyKys7CiAgICB9CiAgICBpZiggaUN1cnJlbnRMZW5ndGggPiBpTG9uZ2VzdFNvRmFyICl7CiAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHJpbmcoIHBvc0xvbmdlc3RTb0ZhciApOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyggcG9zTG9uZ2VzdFNvRmFyLCBwb3NMb25nZXN0U29GYXIgKyBpTG9uZ2VzdFNvRmFyICk7CiAgICB9Cn0KCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgIHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKGdldExvbmdlc3RTdWJzdHJpbmdOb1JlcGVhdHMoIkJBQkdBS0tHSU1OIikpOwogICB9Cn0=