题解 | #把数字翻译成字符串# 后缀和思路
把数字翻译成字符串
https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668
import java.util.*; public class Solution { public int solve (String nums) { int n = nums.length(); if (n == 0) return 0; if (n == 1) { if (nums.charAt(0) == '0') return 0; else return 1; } char[] chars = nums.toCharArray(); // 初始化dp表 int [] dp = new int[n]; if (chars[n - 1] == '0') { dp[n - 1] = 0; } else { dp[n - 1] = 1; } if (chars[n - 2] == '0') { dp[n - 2] = 0; } else if (chars[n - 2] * 10 + chars[n - 1] - '1' * 11 + 11 <= 26 && chars[n - 2] * 10 + chars[n - 1] - '1' * 11 + 11 > 0) { dp[n - 2] = dp[n - 1] + 1; } else { dp[n - 2] = dp[n - 1]; } // 遍历字符串 for (int i = n - 3; i >= 0; --i) { if (chars[i] == '0') { // 说明有一种可能,和前一个组成一个字母 dp[i] = 0; } else if (chars[i] * 10 + chars[i + 1] - '1' * 11 + 11 <= 26) { // 说明有两种可能,和前一个组成一个字母或自己是一个字母 dp[i] = dp[i + 1] + dp[i + 2]; } else { // 说明有一种可能,自己是一个字母 dp[i] = dp[i + 1]; } } return dp[0]; } }#动态规划##后缀#