LinkedList и самый длинный порядок возрастания подстроки
Приветствия, я немного застрял в проблеме, где в основном пытается найти самую длинную в алфавитном порядке подстроку. Со следующим кодом
Предположим, сделать такое сравнение.
1 2 3 4 5
2 3 4 5
3 4 5
4 5
Где числа представляют позиции, и, скажем, позиции 1 и 2 сравниваются, или позиции 4 и 5 сравниваются.
public class Practice_with_Linked_List {
public static void main(String[] args) {
// TODO Auto-generated method stub
String phrase = "ABCABCDZYX";
String lc = phrase.toLowerCase();
LinkedList<Character> ll = new LinkedList<>();
LinkedList<Character> maxll = new LinkedList<>();
int maxsize = 0;
for(int a = 0; a < phrase.length(); a++ ){
for(int b = a; b < phrase.length() - 1; b++ ){
if(lc.charAt(b) < lc.charAt(b +1) ){
ll.add(lc.charAt(b));
}
else if(lc.charAt(b) > lc.charAt(b +1)){
if(ll.size() > maxsize){
maxsize = ll.size();
//System.out.println(maxsize);
maxll.clear();
maxll.addAll(ll);
ll.clear();
break;
}
} else if(b == phrase.length() -1 ){
ll.clear();
break;
}
}
}
System.out.println(maxll);
}
}
С выходом. [a, b, c, d, a, b, c, d]
Это не идеально, так как самая длинная строка здесь ABCDZ. Немного озадачен здесь, не уверен, что это мой логический оператор за секунду для цикла, который делает это или прерывает его.
У меня есть thw booleans setup, чтобы основные сравнения были сделаны. Последнее else-if предполагается "начать поверх связанного списка", удалив весь контент в нем и, таким образом, допустив повторную итерацию. Какие-либо предложения?