二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 供应 » 正文

2021_02_17_规定1和A对应_2和B对应_3

放大字体  缩小字体 发布日期:2022-02-05 12:59:39    作者:田清妍    浏览次数:311
导读

2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一个数字字符串比如"111”就可以转化为:"AAA"、"KA"和"AK"。给定一个只有数字字符组成得字符串str,请问有多少种转化

2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一个数字字符串比如"111”就可以转化为:"AAA"、"KA"和"AK"。给定一个只有数字字符组成得字符串str,请问有多少种转化结果?

福哥答案2021-02-17:

自然智慧即可。

1.递归。有代码。

2.动态规划。有代码。

代码用golang编写,代码如下:

package mainimport "fmt"func main() { str := "7210231231232031203123" fmt.Println("1.递归:", number1(str)) fmt.Println("2.动态规划:", number2(str))}func number1(str string) int { if len(str) == 0 { return 0 } return process1(str, 0)}func process1(str string, index int) int { strLen := len(str) if strLen == index { //1 return 1 } if str[index] == '0' { return 0 } ret := process1(str, index+1) if index+1 < strLen && (str[index] == '1' || (str[index] == '2' && str[index+1] <= '6')) { ret += process1(str, index+2) } return ret}func number2(str string) int { strLen := len(str) if strLen == 0 { return 0 } dp := make([]int, strLen+1) dp[strLen] = 1 //1 for i := strLen - 1; i >= 0; i-- { if str[i] == '0' { continue } dp[i] = dp[i+1] if i+1 < strLen && (str[i] == '1' || (str[i] == '2' && str[i+1] <= '6')) { dp[i] += dp[i+2] } } return dp[0]}

执行结果如下:

***

[左神java代码](github/algorithmzuo/algorithmbasic上年/blob/master/src/class19/Code02_ConvertToLetterString.java)

[评论](user.qzone.qq/3182319461/blog/1613517064)

 
(文/田清妍)
免责声明
• 
本文仅代表发布者:田清妍个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈