[LeetCode-Algorithms-91] "Decode Ways" (2017.10.19-WEEK7)

来源:互联网 发布:seo中代码优化 编辑:程序博客网 时间:2024/06/06 00:07

题目链接:Decode Ways


  • 题目描述:A message containing letters from A-Z is being encoded to numbers using the following mapping:

‘A’ -> 1
‘B’ -> 2

‘Z’ -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.

For example,
Given encoded message “12”, it could be decoded as “AB” (1 2) or “L” (12).

The number of ways decoding “12” is 2.


(1)思路:动态规划,寻找状态转移方程。

L为原始的由数字组成的字符串,函数f(x)表示在L中,从起点开始,长度为x的数字字符串能够表示为f(x)种字母字符串,L(x)表示为L字符串中第x个字符。

如果L(x)大于0,则f(x)至少为f(x - 1);

如果L(x - 1)为1,则f(x)至少为f(x - 2);

如果L(x - 1)为2且L(x) 小于等于6,则f(x)至少为f(x - 2);

(2)代码:

class Solution {public:    int numDecodings(string s) {        if (s.length() == 0 || s[0] == '0') {            return 0;        }        int a = 1, b = 0, c = 0, x, y, z;        for (auto each : s) {            x = (each > '0') * a + b + (each <= '6') * c;            y = (each == '1') * a;            z = (each == '2') * a;            a = x;            b = y;            c = z;        }        return a;    }};

(3)提交结果:

这里写图片描述

原创粉丝点击