美文网首页
35. Decode Ways FROM Leetcode

35. Decode Ways FROM Leetcode

作者: 时光杂货店 | 来源:发表于2017-03-17 19:49 被阅读14次

    题目

    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.

    频度: 4

    解题之法

    class Solution {
    public:
        int numDecodings(string s) {
            
          int n = s.size();
          
          if(n == 0 || s[0] == '0') return 0;
          if(n == 1) return 1;
          
          int res = 0,fn_1 = 1,fn_2 = 1;
          for(int i = 1;i < n;i++){
            int temp = fn_1;
            if(isValid(s[i])&&isValid(s[i-1],s[i]))  res+=fn_1+fn_2;
            if(!isValid(s[i])&&isValid(s[i-1],s[i])) res+=fn_2;
            if(isValid(s[i])&&!isValid(s[i-1],s[i])) res+=fn_1;
            if(!isValid(s[i])&&!isValid(s[i-1],s[i]))  return 0;
            fn_1 = res;
            fn_2 = temp;
            res = 0;
        }
        return fn_1;
    }
        bool isValid(char a,char b){
        return a == '1'||(a == '2' && b <='6');
    }
    bool isValid(char a){
        return a != '0';
    }
    };
    

    相关文章

      网友评论

          本文标题:35. Decode Ways FROM Leetcode

          本文链接:https://www.haomeiwen.com/subject/apkynttx.html