Définition d'une sous-chaîne en cours: tempString
La mise en place d'une tenue tableau de sous-chaîne sans répétition: liste
idées:
A en juger par le début du premier caractère,
Si la sous-chaîne actuelle ne comprend pas le caractère actuel, la sous-chaîne actuelle joindre le caractère actuel devient le nouveau courant sous-chaîne,
Si la sous-chaîne actuelle, y compris le caractère courant dans la position actuelle de caractères est déterminé dans la chaîne en cours, selon la position de la chaîne en deux chaînes, une extrémité arrière si le caractère actuel est ajouté à la nouvelle sous-chaîne en cours, déterminé sous courant tableau de chaînes sous-chaîne de longueur de la liste si la longueur actuelle de la chaîne, la liste vide, la sous-chaîne de courant ajouté, si égal, directement ajouté à la liste de sous-chaîne en cours.
La liste finale de la sous-chaîne est la plus longue sous-chaîne
public static void longestNodupSubstring (chaîne String) {
if (NULL == chaîne || string.length () == 0) {
retour;
}
Liste <String> list = new ArrayList <String> ();
Chaîne tempString = "";
pour (int i = 0; i <string.length (); i ++) {
if (tempString.indexOf (String.charAt (i)) == -1) {
tempString + = String.charAt (i);
} Else {
int j = tempString.indexOf (String.charAt (i));
tempString = tempString.substring (j + 1) + String.charAt (i);
}
If (list.size () == 0) {
list.add (tempString);
} Else {
if (tempString.length ()> list.get (0) .length ()) {
list.clear ();
list.add (tempString);
} Else {
if (tempString.length () == list.get (0) .length ()) {
list.add (tempString);
}
}
}
}
For (int i = 0; i <list.size (); i ++) {
System.out.println (list.get (i));
}
}
public static void main (String [] args) {
longestNodupSubstring1 ( "ABCABCABC");
}