LeetcodeDecode Ways
Posted wuezs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetcodeDecode Ways相关的知识,希望对你有一定的参考价值。
题目链接: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 int numDecodings(String s) {
if (s.length() == 0)
return 0;
char sc[] = s.toCharArray();
if (sc[0] == '0')
return 0;
int c[] = new int[s.length()];
c[0] = 1;
for (int i = 1; i < sc.length; i++) {
if ((sc[i - 1] == '2' && sc[i] >= '1' && sc[i] <= '6') || (sc[i - 1] == '1' && sc[i] != '0')) {
if (i + 1 < sc.length && sc[i + 1] == '0') {
c[i] = c[i - 1];
} else if (i - 2 >= 0) {
c[i] = c[i - 1] + c[i - 2];// 类似爬楼梯题
} else {
c[i] = c[i - 1] + 1;
}
} else if (sc[i] == '0' && sc[i - 1] == '0') {
return 0;
} else if (sc[i] == '0' && sc[i - 1] > '2') {
return 0;
} else {
c[i] = c[i - 1];
}
}
return c[s.length() - 1];
}
以上是关于LeetcodeDecode Ways的主要内容,如果未能解决你的问题,请参考以下文章
hdu 2157 How many ways?? (可达矩阵)
ChatGPTChatGPT Tutorial for Developers - 38 Ways to 10x Your Productivity - 知识点目录