|
|
@ -68,6 +68,11 @@ public class Code02_ConvertToLetterString {
|
|
|
|
dp[0] = 1;
|
|
|
|
dp[0] = 1;
|
|
|
|
for (int i = 1; i < N; i++) {
|
|
|
|
for (int i = 1; i < N; i++) {
|
|
|
|
if (str[i] == '0') {
|
|
|
|
if (str[i] == '0') {
|
|
|
|
|
|
|
|
// 如果此时str[i]=='0',那么他是一定要拉前一个字符(i-1的字符)一起拼的,
|
|
|
|
|
|
|
|
// 那么就要求前一个字符,不能也是‘0’,否则拼不了。
|
|
|
|
|
|
|
|
// 前一个字符不是‘0’就够了嘛?不够,还得要求拼完了要么是10,要么是20,如果更大的话,拼不了。
|
|
|
|
|
|
|
|
// 这就够了嘛?还不够,你们拼完了,还得要求str[0...i-2]真的可以被分解!
|
|
|
|
|
|
|
|
// 如果str[0...i-2]都不存在分解方案,那i和i-1拼成了也不行,因为之前的搞定不了。
|
|
|
|
if (str[i - 1] == '0' || str[i - 1] > '2' || (i - 2 >= 0 && dp[i - 2] == 0)) {
|
|
|
|
if (str[i - 1] == '0' || str[i - 1] > '2' || (i - 2 >= 0 && dp[i - 2] == 0)) {
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|