Saya mencoba menulis tumpukan Java menggunakan kode daftar tertaut untuk menghapus elemen duplikat dalam sebuah string. Pada dasarnya saya mendorong elemen dalam tumpukan jika tidak sama dengan elemen di atas jika tidak, saya akan memunculkan elemen teratas. String yang tersisa adalah string yang diperlukan. '''

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;

}
}

'''

0
Eshu Manohare 7 Maret 2020, 15:37

1 menjawab

Jawaban Terbaik

Sepertinya Anda mengulangi Node atas yang sama saja, melewatkan menyegarkan penunjuk atas

Di removeDuplicate() Anda, sebelum pernyataan return, di loop WHILE, coba perubahan yang disebutkan..

    while(top!= null){
        ans += top.data;
        top = top.next; // add this
    }
1
Aditya Rewari 7 Maret 2020, 13:33