A message made of the capital letters A to Z was turned into digits by writing each letter as its position in the alphabet: A becomes 1, B becomes 2, and so on up to Z, which becomes 26.
To decode the digits, split them into groups, each group a number from 1 to 26, and turn each group back into its letter. A group can't start with 0: "06" is not the same as "6", and no letter is 0. For example, "11106" can be decoded in two ways:
"AAJF", from the groups 1, 1, 10, 6;"KJF", from the groups 11, 10, 6.
The groups 1, 11, 06 don't work, because 06 starts with 0.
Given a string s of digits, return the number of ways to decode it. If it can't be decoded at all, return 0.
Example 1:
Input: s = "12" Output: 2 Explanation: "12" can be decoded as "AB" (1, 2) or as "L" (12).
Example 2:
Input: s = "226" Output: 3 Explanation: "226" can be decoded as "BZ" (2, 26), "VF" (22, 6) or "BBF" (2, 2, 6).
Example 3:
Input: s = "06" Output: 0 Explanation: The first group would have to start with 0: "0" is no letter, and "06" can't be read as 6. So "06" can't be decoded.
Constraints:
1 <= s.length <= 100sis made of digits only,0to9, and may start with0.- The answer fits in a 32-bit integer.
Your algorithm should run in O(n) time, where n is the length of s.
Free plan: 30 tutor messages. PRO is unlimited.
