剑指 Offer 46. 把数字翻译成字符串 - 力扣(LeetCode) (leetcode-cn.com)
首先放上运行结果
思路
-
否定常规方案
这显然是一道动态规划的题目,我们一开始就从动态规划的角度出发,从后向前来考虑问题。首先,我们将一个n位的数字拆分成两部分:前n-2位和最后两位。设n位数字有t[n]种翻译方法,则如果最后两位大于25或者小于10,那么最后一位只能单独翻译,那么t[n] = t[n - 1];如果最后两位小于等于25且大于等于10,那么最后一位可以单独翻译,也可以最后两位连在一起翻译,那么t[n] = t[n-1] + t[n-2];
取得最后两位的方法是:num % 100
把上述讨论综合在一起,我们有:t[n] = num%100 > 25 ||