每日一题 2019 - 04 - 18
题目:
A message containing letters from A-Z
is being encoded to numbers using the following mapping:
1 | 'A' -> 1 |
Given a non-empty string containing only digits, determine the total number of ways to decode it.
Example 1:
1 | Input: "12" |
Example 2:
1 | Input: "226" |
解法:
这个题让找出给定的数字串中可以拆分成多少种不同的字母组合,也即一道简单的动态规划的题,所以可以从数字的拆分上着手做,比如:
- 两位数必须在
[1,26]
范围内 - 一位数必须在
[1,9]
范围内
同时每一个 dp
位置上的大小可从两方面决定,一方面来自 dp[i-2]
(也即满足提议的两位数字+前面的情况),一方面来自 dp[i-1]
(也即满足提议的一位数字+前面的情况),同时这两个位置的 dp
之和,才是所求位置的字母组合情况种类;
代码:
1 | class Solution { |