Entfernen von doppelten Zeichen aus array

Während Sie Lesen ein Buch namens Cracking the coding interview durch Gayle Laakmann stieß ich auf diese Frage

Entwerfen Sie einen Algorithmus und schreiben Sie den code zum entfernen der doppelte Zeichen
in einem string ohne zusätzlichen Puffer. HINWEIS: Eine oder zwei
weitere Variablen sind in Ordnung. Eine zusätzliche Kopie des Arrays nicht.

und dieser code :-

 public static void removeDuplicates(char[] str) {
        if (str == null) {
            return;
        }
        int len = str.length;
        if (len < 2) {
            return;
        }

        int tail = 1;

        for (int i = 1; i < len; ++i) {
            int j;
            for (j = 0; j < tail; ++j) {
                if (str[i] == str[j]) {
                    break;
                }
            }
            if (j == tail) {
                str[tail] = str[i];
                ++tail;
            }
        }
        str[tail] = 0;
    }

entfernen soll doppelte Zeichen aus dem array. Ich glaube nicht, ruhig scheinen zu verstehen, was der Algorithmus tut, durch den Austausch den gleichen Charakter immer und immer wieder. Ich dachte, es ist nur mir, wer fühlt, dass der Algorithmus nicht funktioniert, aber ehrlich gesagt, bei mir lief dieser code ermöglicht mir falsche Ausgänge. Ist diese schwerwiegenden Fehler im Buch oder hab ich die Frage nicht verstanden?

InformationsquelleAutor TCM | 2010-08-03

Schreibe einen Kommentar