Leetcode_decode-ways

来源:互联网 发布:2016年淘宝考试答案 编辑:程序博客网 时间:2024/05/23 12:05

地址:http://oj.leetcode.com/problems/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.

思路:一维dp。在x位置的状态只和在x-1和x-2子状态有关。

(1)有一次x-1状态直接转移到x的状态。

(2)当x-1和x-2两个子状态符号某一条件时,有一次状态转移。

参考代码:36ms

class Solution {public:    int numDecodings(string s) {        if(s.empty() || s[0]=='0')            return 0;        vector<int>dp(s.length()+1, 0);        dp[0] = dp[1] = 1;        for(int i = 2; i<=s.length(); ++i)        {            if(s[i-1]!='0')                dp[i] = dp[i-1];            if(s[i-2]=='1' || (s[i-2]=='2' && s[i-1]<'7'))                dp[i] += dp[i-2];        }        return dp[s.length()];    }};


0 0