字母编码的问题(A-Z对应的数字转换)

原题的描述的解决。主要是对A-Z对应于1-26的分析: 

 但携程考虑的是对0-25的编码呢?

 public int numDecodings(String s) {
     /*   if (s.charAt(0) == '0') {
            return 1;
        }*/
        int pre = 1, curr = 1;
        for (int i = 1; i < s.length(); i++) {
            int tmp = curr;
            if (s.charAt(i)== '0') {
                if (s.charAt(i - 1) == '1' || s.charAt(i - 1) == '2') {
                    curr = pre+curr;
                }else if(s.charAt(i - 1) > '2'){
                    curr = pre;
                }
            }else if (s.charAt(i - 1) == '1' || (s.charAt(i - 1) == '2' && s.charAt(i) >= '1' && s.charAt(i - 1) <= '5')){
                curr = curr + pre;}
            else if (s.charAt(i-1) == 0){
                curr = pre;
            }
            pre = tmp;
        }
        return curr;
    }

主要是对0的特殊的处理啊。多了几种的情况

1)s(i) = 0的时候。要是有s(i-1)有1或者2;

2)s(i) = 0的时候。要是有s(-1) > 3;

3)s(i-1) = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值