LeetCode 91. Decode Ways(解码方法)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jmspan/article/details/51473562

原题网址:https://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.

方法:动态规划。

public class Solution {
    public int numDecodings(String s) {
        if (s == null || s.length() == 0) return 0;
        char[] sa = s.toCharArray();
        int[] nums = new int[sa.length+1];
        nums[0] = 1;
        for(int i=1; i<=sa.length; i++) {
            if (sa[i-1] != '0') nums[i] += nums[i-1];
            if (i>1 && sa[i-2] == '1') nums[i] += nums[i-2];
            if (i>1 && sa[i-2] == '2' && sa[i-1] >= '0' && sa[i-1] <= '6') nums[i] += nums[i-2];
        }
        return nums[sa.length];
    }
}


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试