千家信息网

golang刷leetcode技巧的解码方法

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,golang刷leetcode技巧的解码方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一条包含字母 A-Z 的消息通过以下方式进
千家信息网最后更新 2025年02月03日golang刷leetcode技巧的解码方法

golang刷leetcode技巧的解码方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

'A' -> 1

'B' -> 2

...

'Z' -> 26

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

示例 1:

输入: "12"

输出: 2

解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。

示例 2:

输入: "226"

输出: 3

解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6)

解题思路:

1,动态规划解决

假设s[0:i-1] 有dp[i]种解码方案

2,状态转移方程

A,如果s[i]='0' 有两种情况

(1)s[i-1]='1' || '2'

这个时候s[i-1] s[i]必须一起解码才行

故 dp[i+1]=dp[i-1]

(2) 其他情况

这时候解码失败

dp[i+1]=0

B,如果s[i-1]='1',s[i]这一位单独解码或者 和s[i-1]一起解码都可以

dp[i+1]=dp[i]+dp[i-1]

C,如果s[i-1]='2',s[i]>'0' && s[i]<='6' ,同上

dp[i+1]=dp[i]+dp[i-1]

D, 其他情况,只能单独解码

dp[i+1]=dp[i]

3,初始化条件,由于dp[i+1]用到了dp[i]和dp[i-1],所以递增迭代

如果s[0]=='0'直接解码失败,返回0

dp[1]=1

为了便于计算,我们增加了dp[0],且初始化值是1

测试用例:

"50926""10""100""110""12""123""0""226""1""123456"

代码实现:

func numDecodings(s string) int {    dp:=make([]int,len(s)+1)    dp[0]=1    if s[0]=='0'{       return 0    }else{       dp[1]=1    }

for i:=1;i if s[i]=='0'{ if s[i-1]=='1' || s[i-1]=='2'{ dp[i+1]=dp[i-1] } }else{ if s[i-1]=='1'{ dp[i+1]=dp[i]+dp[i-1] }else if s[i-1]=='2' && s[i]<='6'{ dp[i+1]=dp[i]+dp[i-1] }else{ dp[i+1]=dp[i] } } } return dp[len(s)]}

代码优化:

由于我们只用到了dp[i]和dp[i-1]俩变量,其他存储是非必须的,所以,可以优化

func numDecodings(s string) int {       if s[0]=='0'{       return 0    }    prepre:=1    pre:=1    cur:=1    
for i:=1;i if s[i]=='0'{ if s[i-1]=='1' || s[i-1]=='2'{ cur=prepre }else{ return 0 } }else{ if s[i-1]=='1' || ( s[i-1]=='2' && s[i]<='6'){ cur=pre+prepre }else{ cur=pre } } prepre=pre pre=cur fmt.Println(cur,pre,prepre) } return cur}

关于golang刷leetcode技巧的解码方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

方法 情况 问题 技巧 代码 更多 示例 帮助 解答 解释 输入 输出 易行 简单易行 内容 动态 变量 字母 小伙 小伙伴 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 好房好家天津互联网科技有限公司 go项目部署到服务器 建立网络安全审查制度 华为服务器管理口不亮 广东省联社软件开发笔试 四川中全通网络技术有限公司 多台dhcp服务器 硬件开发需要了解软件开发 我的世界造服务器主城的指令 网络技术未来教育官网 腾讯文档做数据库 阿里云学生服务器优惠 互联网微科技北京有限公司 宏源工业互联网科技有限公司 众所周知印度软件开发 网络安全实施方案指导思想 一梦江湖一共多少个服务器 数据库题库网站源码 数据库选课系统系统架构 河北网络技术服务目的 数据库中select不能实现 花生壳的服务器地址 天津语音网络技术服务标准 三级网络技术书网盘 汽车数据库模板 高校买知网数据库账务处理 广东帮啦网络技术有限公司 搜数据库的题用什么软件 数据库管理是数据管理方式吗 一个小的软件开发要多少钱
0