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 предполагается "начать поверх связанного списка", удалив весь контент в нем и, таким образом, допустив повторную итерацию. Какие-либо предложения?

0 ответов

Другие вопросы по тегам