给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。
示例 1:
输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi“
动态规划
func translateNum(num int) int {
width := 10
for num/width > 10 {
width *= 10
}
p, q, r := 0, 1, 1
for width >= 1 {
cur := (num / width) - ((num / (width * 100))*100)
p, q, r = q, r, 0
r+=q
if cur <=25 && cur >=10{
r+=p
}
width /= 10
}
return r
}