剑指 Offer 46. 把数字翻译成字符串

发布时间 2023-09-07 17:20:48作者: 小星code

题目链接: 剑指 Offer 46. 把数字翻译成字符串

题目描述:

解法思路:

代码:

// dp[i] =  dp[i-1] + dp[i-2]
// dp[i] 表示长度为i的数字,翻译成字符串有多少种
func translateNum(num int) int {
    s := strconv.Itoa(num)
    n := len(s)
    dp := make([]int,n+1)
    dp[0] = 1  //初始时只有一种
    dp[1] = 1  // 长度为 1 也是一种
    for i := 2; i <= n;i++{
        dp[i] = dp[i-1]  //单个数字翻译
        
        t := (s[i-2]-'0') * 10 + (s[i-1] - '0')
        if t >=10 && t <= 25 {  // 如果两个数字翻译,也可以,那就加上这种情况
            dp[i] += dp[i-2]
        }
    }
    return dp[n]
}