• [leetcode]Decode Ways


    /*每次对于当前的字符判断是否属于1-9(0肯定不行,因为0不在1-26中),如果属于,那么当前的字符可以被decode,并且和f[n-1]组合,f[n] += f[n-1]
    然后对于当前字符和前一个字符组成的字符串判断是否属于10-26,如果属于,那么这两个字符可以被decode,并且和f[n-2]组合,f[n] += f[n-2]
    */

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    class Solution {
    public:
        int numDecodings(string s) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if (s == "")
                return 0;
    
            vector<int> f;
            f.resize(s.length());
            int i = 0;
            for (; i < s.length(); i++){
                f[i] = 0;
                if (i >= 1){
                    string tmp(s, i-1, 2);
                    if ("10" <= tmp && tmp <= "26")
                        if (i > 1)
                            f[i] += f[i-2];
                        else
                            f[i] += 1;//i == 1,没有i - 2这个index
                    if ('1' <= s[i] && s[i] <= '9')
                        f[i] += f[i-1];
                }
                else{//i == 0
                    if ('1' <= s[i] && s[i] <= '9')
                        f[i] = 1;
                }
            }
    
            return f[i-1];
        }
    };
    
    int main()
    {
        string s = "0";
        Solution sln;
        int result = sln.numDecodings(s);
        cout<<result;
        return 0;
    }

    EOF

  • 相关阅读:
    74.Interesting Sequence(有趣的数列)(拓扑排序)
    CODEVS 1746 贪吃的九头龙
    NYOJ 110 剑客决斗
    CODEVS 2451 互不侵犯
    洛谷 P1896 互不侵犯King
    洛谷 P1066 2^k进制数
    洛谷 P1656 炸铁路
    洛谷 P1830 轰炸Ⅲ
    CODEVS 1051 接龙游戏
    POJ 3461 Oulipo
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2839964.html
Copyright © 2020-2023  润新知