0091.解码方法

方法一:动态规划

时间复杂度 $O(n)$,空间复杂度 $O(1)$。

func numDecodings(s string) int {
	if s[0] == '0' {
		return 0
	}
	a, b, c := 1, 1, 1
	for i := 1; i < len(s); i++ {
		pv, v := int(s[i-1]-'0'), int(s[i]-'0')
		c = 0
		if v != 0 {
			c = b
		}
		if pv != 0 && pv*10+v >= 1 && pv*10+v <= 26 {
			c += a
		}
		a, b = b, c
	}
	return c
}