Files
cpp-flashcards/org/study_deck_02/dsa/1-d-dynamic-programming/0091-decode-ways.org
T

89 lines
1.8 KiB
Org Mode
Raw Normal View History

2026-06-01 18:12:40 +08:00
#+ANKI_DECK: study_deck_02
* TODO 0091. Decode Ways :medium:
:PROPERTIES:
:NEETCODE: [[file:../../roadmap.org::*0091. Decode Ways][0091. Decode Ways]]
:END:
You have intercepted a secret message encoded as a string of numbers. The message is *decoded* via the following mapping:
~"1" -> 'A'
"2" -> 'B'
...
"25" -> 'Y'
"26" -> 'Z'~
However, while decoding the message, you realize that there are many different ways you can decode the message because some codes are contained in other codes (~"2"~ and ~"5"~ vs ~"25"~).
For example, ~"11106"~ can be decoded into:
- ~"AAJF"~ with the grouping ~(1, 1, 10, 6)~
- ~"KJF"~ with the grouping ~(11, 10, 6)~
- The grouping ~(1, 11, 06)~ is invalid because ~"06"~ is not a valid code (only ~"6"~ is valid).
Note: there may be strings that are impossible to decode.
Given a string s containing only digits, return the *number of ways* to *decode* it. If the entire string cannot be decoded in any valid way, return ~0~.
The test cases are generated so that the answer fits in a *32-bit* integer.
*Example 1:*
*Input:* s = "12"
*Output:* 2
*Explanation:*
"12" could be decoded as "AB" (1 2) or "L" (12).
*Example 2:*
*Input:* s = "226"
*Output:* 3
*Explanation:*
"226" could be decoded as "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
*Example 3:*
*Input:* s = "06"
*Output:* 0
*Explanation:*
"06" cannot be mapped to "F" because of the leading zero ("6" is different from "06"). In this case, the string is not a valid encoding, so return 0.
*Constraints:*
- ~1 <= s.length <= 100~
- ~s~ contains only digits and may contain leading zero(s).
** TODO Approach
Write your approach here.
** TODO Python
#+begin_src python
class Solution:
def numDecodings(self, s: str) -> int:
#+end_src
** TODO C++
#+begin_src cpp
class Solution {
public:
int numDecodings(string s) {
}
};
#+end_src