如果给你一个找规律的题目1,2,3,5,? 下一个是多少?
大家在读书时肯定遇到过这样找规律的题目,聪明的你肯定会知道下一个数字是8,为什么呢?这其实就是著名的斐波那契数列,下一个数字是前两个数字的和。
本质上LeetCode的第91号题目Decode Ways其实就是斐波那契数列数列的变型,这是个什么样的题目呢?
大写字母A-Z被映射到了以下数字:
'A' -> 1
'B' -> 2
...
'Z' -> 26
那么给定一个只包含数字的字符串,问这个数字字符串有多少种可能的解释。
比如给定“12”,那就有两种解释,可以解释为AB也就是(1, 2),也可以解释为L,即(12)。
该怎么解决这个问题呢?
思考过程
给定一个字符串假设是“1226”,我们可以先从最简单的情况开始,从右边数第一个数字是6,那么对于数字6来说很简单,只有一种解释,那就是6,即:
我们用“数组下标 :{编码数字}”的形式来表示以某一个位置为开始的字符串所有可能的编码形式。
接下来我们来到了右数第二个数字2,对于26来说有两种解释,一种就是26也就是Z;另一种是(2,6)也就是BF,因此: