解题思路
记忆化搜索,记录已经计算过的子问题
代码
func numDecodings(s string) int {temp:=make([]int,len(s),len(s))for i := range temp {temp[i]=-1}return de(s,0,temp)
}
func de(s string,cur int,dp []int) int {if cur==len(s){return 1}if dp[cur]!=-1{return dp[cur]}res,res1:=0,0if cur+1 <= len(s) {atoi, _ := strconv.Atoi(s[cur : cur+1])if atoi>0 {res=de(s,cur+1,dp) }}if cur+2<=len(s){atoi, _ := strconv.Atoi(s[cur : cur+2])if atoi>0 {res1=de(s,cur+1,dp)}}dp[cur]=res+res1return dp[cur]}