龙空技术网

Java经典算法:解码方式!

异步社区 110

前言:

此刻各位老铁们对“dp算法实例java”大约比较着重,各位老铁们都想要知道一些“dp算法实例java”的相关知识。那么小编也在网上搜集了一些关于“dp算法实例java””的相关资讯,希望兄弟们能喜欢,姐妹们快快来学习一下吧!

使用以下映射将包含来自AZ的字母的消息编码为数字:

'A'->

1'B'-> 2

...

'Z'-> 26

给定包含数字的已编码消息,请确定对其进行解码的总数。

Java解决方案

通过使用动态编程可以解决此问题。这类似于计算爬楼梯方式的问题。关系是dp[n]=dp[n-1]+dp[n-2]。,下面是代码:

publicintnumDecodings(String s) {

int[] dp = newint[s.length() + 1];

dp[0] = 1;

if(s.charAt(0) == '0') {

return0;

}

dp[1] = 1;

for(int i = 1; i < s.length(); i++) {

charc = s.charAt(i);

charp = s.charAt(i - 1);

if(c == '0' && (p == '0' || p > '2')) {

return0;

}

if(p == '0') {

dp[i + 1] = dp[i];

} elseif (p == '1') {

if(c == '0') {

dp[i + 1] = dp[i - 1];

} else {

dp[i + 1] = dp[i - 1] + dp[i];

}

} elseif (p == '2') {

} elseif (c <= '6') {

dp[i + 1] = dp[i] + dp[i - 1];

dp[i + 1] = dp[i];

} else {

returndp[s.length()];}

标签: #dp算法实例java #javacharc