首页 > 试题广场 >

解码方法

[编程题]解码方法
  • 热度指数:7870 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

一条包含字母 A-Z 的消息通过以下方式进行了编码:

'A' -> 1
'B' -> 2
...
'Z' -> 26

给定一个只包含数字的非空字符串,请计算解码方法的总数。


输入描述:
12可以解码成“AB”,“L”这两种


输出描述:
解码方法的总数
示例1

输入

12

输出

2

说明

12可以解码成“AB”,“A,B"这两种 
package main

import (
    "fmt"
)


func main(){
    str := ""
    fmt.Scan(&str)
    n := len(str)

    dp := make([]int, n+2)
    dp[0] = 1
    dp[1] = 2

    for i := 2 ; i < n ; i++ {

        if str[i-1] <= '2' && str[i] <= '6' {
            dp[i] = dp[i-2] + dp[i-1]
        }else{
            dp[i] = dp[i-1]
        }
    }
    fmt.Println(dp[n-1])
}

发表于 2023-09-18 21:14:30 回复(0)