Überprüfen Sie eine Antwort - Decode Ways

Ich versuche eine Frage zu lösen und meine Frage ist hierWarum funktioniert meine Lösung nicht?. Hier ist die Frage und unten ist die Antwort.

Frage aus leetcode:http://oj.leetcode.com/problems/decode-ways/

Eine Nachricht mit Buchstaben von A bis Z wird unter Verwendung der folgenden Zuordnung in Zahlen codiert:

'A' -> 1
'B' -> 2
...
'Z' -> 26

Bestimmen Sie bei einer codierten Nachricht, die Ziffern enthält, die Gesamtzahl der Möglichkeiten, sie zu decodieren.

Beispielsweise könnte eine gegebene codierte Nachricht "12" als "AB" (1 2) oder "L" (12) decodiert werden. Die Anzahl der Wege, auf denen "12" dekodiert wird, beträgt 2.

Meine Lösung:

Bei meiner Lösung geht es darum, die Anzahl der Optionen zu multiplizieren, wenn ein Split gefunden wird. Mit Teilen meine ich, dass Ziffern auf zwei Arten interpretiert werden können. Zum Beispiel: 11 kann auf zwei Arten 'aa' oder 'k' interpretiert werden.

public class Solution {
    public int numDecodings(String s) {
        if (s.isEmpty() || s.charAt(0) == '0') return 0;
        int decodings = 1;
        boolean used = false; // Signifies that the prev was already use as a decimal
        for (int index = s.length()-1 ; index > 0 ; index--) {
            char curr = s.charAt(index);
            char prev = s.charAt(index-1);
            if (curr == '0') {
                if (prev != '1' && prev != '2') {
                    return 0;
                }
                index--; // Skip prev because it is part of curr
                used = false;
            } else {
                if (prev == '1' || (prev == '2' && curr <= '6')) {
                    decodings = decodings * 2;
                    if (used) {
                        decodings = decodings - 1;
                    }
                    used = true;
                } else {
                    used = false;
                }
            }
        }
        return decodings;
    }
}

Der Fehler ist auf die folgende Eingabe zurückzuführen:

Input:"4757562545844617494555774581341211511296816786586787755257741178599337186486723247528324612117156948"
Output: 3274568
Expected: 589824

Antworten auf die Frage(5)

Ihre Antwort auf die Frage