JZ46 把数字翻译成字符串
JZ46 把数字翻译成字符串
描述
有一种将字母编码成数字的方式:’a’->1, ‘b->2’, … , ‘z->26’。现在给一串数字,返回有多少种可能的译码结果
数据范围:字符串长度满足 $0<n≤90$
进阶:空间复杂度 $O(n)$,时间复杂度 $O(n)$
示例1
1 | 输入:"12" |
示例2
1 | 输入:"31717126241541717" |
题解
和JZ19类似,只考虑当前字符单独处理还是和右侧一个一起处理。设$dp$为当前的解码方式数量。
当只处理一个字符时,$dp = solv(nums.substr(1))$
当后一个字符和当前字符组成数字小于大于等于10时,$dp += solve(nums.substr(2))$
边界条件:$nums$长度为0时返回1,$nums$首位为0时不合法。
1 |
|