2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一个数字字符串比
16lz
2021-02-18
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代码
评论
更多相关文章
- 航电oj2004-2005代码
- Java反射机制:跟着代码学反射
- 2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?
- 我的第九个代码
- Django入门到进阶-适合Python小白的系统课程
- 玩转算法面试-- Leetcode真题分门别类讲解
- Tornado从入门到进阶 打造支持高并发的技术论坛
- 协程原理从入门到精通 每个后端开发都需要掌握的高性能开发技术
- 算法与数据结构-综合提升 C++版