File tree 1 file changed +3
-3
lines changed
1 file changed +3
-3
lines changed Original file line number Diff line number Diff line change @@ -40,12 +40,12 @@ edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9
40
40
41
41
我们先将数字 ` num ` 转为字符串 $s$,字符串 $s$ 的长度记为 $n$。
42
42
43
- 然后我们设计一个函数 $dfs(i)$,表示从第 $i$ 个数字开始的不同翻译的数目 。那么答案就是 $dfs(0)$。
43
+ 然后我们设计一个函数 $dfs(i)$,表示从索引为 $i$ 的数字开始的不同翻译的数目 。那么答案就是 $dfs(0)$。
44
44
45
45
函数 $dfs(i)$ 的计算如下:
46
46
47
- - 如果 $i \ge n - 1$,说明已经翻译到最后一个数字,只有一种翻译方法 ,返回 $1$;
48
- - 否则,我们可以选择翻译第 $i$ 个数字 ,此时翻译方法数目为 $dfs(i + 1)$;如果第 $i$ 个数字和第 $i + 1$ 个数字可以组成一个有效的字符 (即 $s[ i] == 1$ 或者 $s[ i] == 2$ 且 $s[ i + 1] \lt 6$),那么我们还可以选择翻译第 $i$ 和第 $i + 1$ 个数字 ,此时翻译方法数目为 $dfs(i + 2)$。因此 $dfs(i) = dfs(i+1) + dfs(i+2)$。
47
+ - 如果 $i \ge n - 1$,说明已经翻译到最后一个数字或者越过最后一个字符,均只有一种翻译方法 ,返回 $1$;
48
+ - 否则,我们可以选择翻译索引为 $i$ 的数字 ,此时翻译方法数目为 $dfs(i + 1)$;如果索引为 $i$ 的数字和索引为 $i + 1$ 的数字可以组成一个有效的字符 (即 $s[ i] == 1$ 或者 $s[ i] == 2$ 且 $s[ i + 1] \lt 6$),那么我们还可以选择翻译索引为 $i$ 和索引为 $i + 1$ 的数字 ,此时翻译方法数目为 $dfs(i + 2)$。因此 $dfs(i) = dfs(i+1) + dfs(i+2)$。
49
49
50
50
过程中我们可以使用记忆化搜索,将已经计算过的 $dfs(i)$ 的值存储起来,避免重复计算。
51
51
You can’t perform that action at this time.
0 commit comments