美文网首页
LC-91找边界

LC-91找边界

作者: 锦绣拾年 | 来源:发表于2020-01-31 18:06 被阅读0次

题目

一条包含字母 A-Z 的消息通过以下方式进行了编码:

'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个只包含数字的非空字符串,请计算解码方法的总数。

示例 1:

输入: "12"
输出: 2
解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。
示例 2:

输入: "226"
输出: 3
解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/decode-ways
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目解析

这个题找边界真的很烦人

很喜欢的很简洁的一个题解

int numDecodings(string s) {
    if (s[0] == '0') return 0;
    int pre = 1, curr = 1;//dp[-1] = dp[0] = 1
    for (int i = 1; i < s.size(); i++) {
        int tmp = curr;
        if (s[i] == '0')
            if (s[i - 1] == '1' || s[i - 1] == '2') curr = pre;
            else return 0;
        else if (s[i - 1] == '1' || (s[i - 1] == '2' && s[i] >= '1' && s[i] <= '6'))
            curr = curr + pre;
        pre = tmp;
    }
    return curr;
}

作者:pris_bupt
链接:https://leetcode-cn.com/problems/decode-ways/solution/c-wo-ren-wei-hen-jian-dan-zhi-guan-de-jie-fa-by-pr/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以下是我乱糟糟的写法

class Solution {
public:
    int numDecodings(string s) {
        int len=s.length();
        int rec[len];
        memset(rec,0,sizeof(rec));
        //rec[i]=rec[i-1]+1+(rec[i-2]+1);错误 考虑解码方式不是解码的字母数
        //rec[i]=
        if(len==1){
            if(s[0]-'0'>0)
                 return 1;
            else
                return 0;
        }
                   
        
        if(s[0]-'0'>0)
            rec[0]=1;
        else
            return 0;
        int rmo=(s[0]-'0')*10+(s[1]-'0');
        if(rmo<=26){
            if(rmo==0){
                rec[1]=0;
            }else if(rmo<=10||rmo%10==0)
                rec[1]=1;
            else{
                rec[1]=2;
            }
        }     
        else 
            rec[1]=rec[0];
        if(s[1]=='0'&&rmo>26&&len>1)
            return 0;
        
        for(int i=2;i<len;i++){
            rec[i]=rec[i-1];
            if(s[i]=='0'&&(s[i-1]>='3'||s[i-1]=='0')){                
                    return 0;               
            }else if(s[i]=='0'&&s[i-1]>'0'&&s[i-1]<'3'){
                rec[i]=rec[i-2];
                continue;
            }
                    
                            
            if((s[i-1]-'0')*10+(s[i]-'0')<=26&&(s[i-1]-'0')*10+(s[i]-'0')>9)
                rec[i]+=rec[i-2];            
            // cout<<rec[i-1]<<endl;
        }
        return rec[len-1];
    }
};

相关文章

  • LC-91找边界

    题目 题目解析 这个题找边界真的很烦人 很喜欢的很简洁的一个题解 以下是我乱糟糟的写法

  • 具体题目

    jss2016 c 肿瘤面积 找左上角和右下角的索引,可以找非肿瘤边界,也可以找肿瘤边界非肿瘤边界:找横纵坐标最小...

  • 面积最大的全1子矩阵

    题目见这里。 这个题目就是枚举搜索,找最大值。以行为例,在每一行中找到每一个左边界,然后枚举以该左边界为边界的线段...

  • mac python3 下安装shapely

    在用python获取城市边界坐标时候,导出shapely总是出错,pip3 install shapely报错 找...

  • 读《拆掉思维的墙》有感

    思维就是一个圆,圆越小,自己意识到的边界越小;圆越大,自己意识到的边界越大。成长就是画圆、画大圆、找圆心、去边...

  • 中洲控股

    建筑房屋很有道,坑蒙拐骗一整套。 经商智力无边界,可惜良心无处找。

  • 8.21 - hard - 79

    407. Trapping Rain Water II 利用外围边界,依次朝里面找,只是新加入heap的值需要取其...

  • 边界,边界,还是边界

    某商家生产的电子产品非常畅销,需要提前30天预订才能抢到手,同时它还规定了一个会员可拥有的最多产品数量,目的是防止...

  • 边界思维

    ?不管是谁?想要成事就一定要遵守边界思维。 ❤️认知边界,能力边界,关系边界,趋势边界。 1、认知边界:知道什么能...

  • 与自己斗其乐无穷

    与自己斗其乐无穷,怎么斗? 划出道道,单挑 先划边界 熬夜✘,玩可以,做事不行 规划、创造✘,找对标 直接讲✘,先...

网友评论

      本文标题:LC-91找边界

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