2021-10-04:解码方法 II。‘A‘ -> 1,‘B‘ -> 2,...‘Z‘ -> 26。*是1-9,不包含0。给你一个字符串 s ,由数字和 ‘*‘ 字符组成,返回 解码 该字符串的方法
2021-10-04:解码方法 II。‘A’ -> 1,‘B’ -> 2,…‘Z’ -> 26。是1-9,不包含0。给你一个字符串 s ,由数字和 '’ 字符组成,返回 解码 该字符串的方法 数目 。由于答案数目可能非常大,返回对 10**9 + 7 取余 的结果。力扣639。
福大大 答案2021-10-04:
递归。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
str := "123*456"
ret := numDecodings0(str)
fmt.Println(ret)
}
func numDecodings0(str string) int {
return f([]byte(str), 0)
}
func f(str []byte, i int) int {
if i == len(str) {
return 1
}
if str[i] == '0' {
return 0
}
// str[index]有字符且不是'0'
if str[i] != '*' {
// str[index] = 1~9
// i -> 单转
p1 := f(str, i+1)
if i+1 == len(str) {
return p1
}
if str[i+1] != '*' {
num := (str[i]-'0')*10 + str[i+1] - '0'
p2 := 0
if num < 27 {
p2 = f(str, i+2)
}
return p1 + p2
} else { // str[i+1] == '*'
// i i+1 -> 一起转 1* 2* 3* 9*
p2 := 0
if str[i] < '3' {
//p2 = f(str, i + 2) * (str[i] == '1' ? 9 : 6);
if str[i] == '1' {
p2 = f(str, i+2) * 9
} else {
p2 = f(str, i+2) * 6
}
}
return p1 + p2
}
} else { // str[i] == '*' 1~9
// i 单转 9种
p1 := 9 * f(str, i+1)
if i+1 == len(str) {
return p1
}
if str[i+1] != '*' {
// * 0 10 20
// * 1 11 21
// * 2 12 22
// * 3 13 23
// * 6 16 26
// * 7 17
// * 8 18
// * 9 19
p2 := 0
if str[i+1] < '7' {
p2 = 2 * f(str, i+2)
} else {
p2 = f(str, i+2)
}
return p1 + p2
} else { // str[i+1] == *
// **
// 11~19 9
// 21 ~26 6
// 15
p2 := 15 * f(str, i+2)
return p1 + p2
}
}
}
执行结果如下:
2021-10-04:解码方法 II。‘A‘ -> 1,‘B‘ -> 2,...‘Z‘ -> 26。*是1-9,不包含0。给你一个字符串 s ,由数字和 ‘*‘ 字符组成,返回 解码 该字符串的方法的更多相关文章
- mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...
- Ubuntu 10.04下架设流媒体服务器
Ubuntu 10.04下架设流媒体服务器 个人建议:使用DarwinStreamingSrvr5.5.5,因为DarwinStreamingSrvr6.0.3安装过程中有很多问题需要解决! 目前主流 ...
- js字符串转换成数字与数字转换成字符串的实现方法
转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...
- mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey
mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...
- JS前端取得并解析后台服务器返回的JSON数据的方法
摘要:主要介绍:使用eval函数解析JSON数据:$.getJSON()方法获得服务器返回的JSON数据 JavaScript eval() 函数 eval(string) 函数可计算某个字符串,并执 ...
- [LeetCode] 639. Decode Ways II 解码方法 II
A message containing letters from A-Z is being encoded to numbers using the following mapping way: ' ...
- OFBIZ 10.04 开发环境搭建(ofbiz+mysql+eclipse)
1.下载安装 JDK1.6,并设置环境变量 在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”. 新建系统变量JAVA_HOME:C:Program Fil ...
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- Ubuntu 10.04 32位桌面版+OpnERP 6.1.1
1.准备环境: sudo apt-get install denyhosts sudo apt-get update sudo apt-get dist-upgrade sudo adduser ...
- ubuntu 10.04 安装qt 5.0.2
转自ubuntu 10.04 安装qt 5.0.2 从qt project网站下载下来最新的qt5.0.2套件,发现是个.run文件,添加x属性,然后直接sudo ./****.run, 提示 /l ...
随机推荐
- 入门VUEX
我对VUEX的理解就是,vuex提供了一个数据仓库 相比较vue里的 data{ return{ ****:**, ***:*** } } vuex提供的仓库会一直在项目 ...
- Tcp网络模型
要摸清网络,那么第一步肯定是要清楚网络协议的分层结构,用上帝视角来看网络. 对于同一台设备上的进程间通信,有很多种方式,比如有管道.消息队列.共享内存.信号等方式,而对于不同设备上的进程间通信,就需要 ...
- day1 第一个程序“Hello world!”
程序运行机制 源程序(.java文件)->java编译器->字节码(.class文件)->类装载器->字节码校验器->解释器->操作系统平台Java源码后缀名:.j ...
- windows10环境下的RabbitMQ安装步骤(图文)(转载)
第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang. 下载地址:http://www.erlang.or ...
- spring-boot-starter-webflux
webflux: 反应式编程reactor的产物,采用发布订阅模式,引入netty的nio,比较适合IO密集型应用. 因普遍应用使用的DB链接是IO阻塞型,因此在一般应用中无法体现它的优势.redis ...
- mybatis-plus 开发环境在控制台打印日志
参考博客:https://blog.csdn.net/qq_32929057/article/details/109291919 # 注意在生产环境注释掉 mubatis-plus: configur ...
- scrcpy软件的使用
一.scrcpy软件介绍: scrcpy是通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制您的Android设备.它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需 ...
- vmware workstation 版本合集
各版本序列号 10.x:1Z0G9-67285-FZG78-ZL3Q2-234JG 11.x:YG74R-86G1M-M8DLP-XEQNT-XAHW2 12.x:ZC3TK-63GE6-481JY- ...
- Java面试——开源框架知识
一.简单讲讲 Tomcat结构,以及其类加载器流程,线程模型等 [1]模块组成结构:Tomcat 的核心组件就 Connector 和 Container,一个Connector+一个Containe ...
- vulnhub靶场之WIRELESS: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Wireless: 1,下载地址:https://download.vulnhub.com/wireless/Mystiko-Wireless. ...