Превышен лимит времени, я пытаюсь удалить дубликаты в строке, используя стек java, используя связанные списки - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь записать java стек, используя код связанного списка для удаления дублирующихся элементов в строке. По сути, я помещаю элементы в стек, если они не совпадают с элементами в верхней части, в противном случае я добавляю верхний элемент. Оставшаяся строка является обязательной строкой. '' '

class Node{
char data;
Node next;
Node(char d){
this.data = d;
this.next = null;
}
Node(){
this.next = null;
}

}

class Solution {    
    public static Node top = new Node();

public String removeDuplicates(String S) {

    if(S.length() == 1){
            return S;
        }
    top = new Node(S.charAt(0));

    for(int i=1; i<S.length(); i++){
        Node newnode1 = new Node(S.charAt(i));
        if(top == null){
            top = newnode1;
            continue;
        }
        if(newnode1.data != top.data){
            newnode1.next = top;
            top = newnode1;

        }    
        else{
            top = top.next;
        }

    }
    String ans = "";
    while(top!= null){
        ans += top.data;
    }
    return ans;

}
}

' ''

1 Ответ

1 голос
/ 07 марта 2020

Похоже, что вы перебираете только один и тот же верхний узел, пропустили обновление верхнего указателя

В вашем методе removeDuplicate () перед оператором возврата в WHILE l oop попробуйте упомянутое изменение.

    while(top!= null){
        ans += top.data;
        top = top.next; // add this
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...