天天看點

2023-2-17 BM69 把數字翻譯成字元串

2023-2-17 BM69 把數字翻譯成字元串
2023-2-17 BM69 把數字翻譯成字元串
class Solution {
public:
    /**
     * 解碼
     * @param nums string字元串 數字串
     * @return int整型
     */
    int solve(string nums) {
        // write code here
        if (nums == "0")
            return 0;
        
        if (nums == "10" || nums == "20") {
            return 1;
        }

        for (int i = 1; i < nums.length(); i++) {
            if (nums[i] == '0') {
                if (nums[i-1] != '1' && nums[i-1] != '2') {
                    return 0;
                }
            }
        }

        int dp0 = 1, dp1 = 1, dp2 = 1;
        for (int i = 2; i <= nums.length(); i++) {
            if ((nums[i-2] == '1' && nums[i-1] != '0') || (nums[i-2] == '2' && nums[i-1] > '0' && nums[i-1] < '7')) {
                dp2 = dp1 + dp0;
            } else dp2 = dp1;

            dp0 = dp1;
            dp1 = dp2;
        }
        return dp2;
    }
};