您的位置 首页 java

Java经典算法:解码方式

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

‘A’->

1’B’-> 2

‘Z’-> 26

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

Java经典算法:解码方式

Java解决方案

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

public int numDecodings(String s) {

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

dp[0] = 1;

if (s.charAt(0) == ‘0’) {

return 0;

}

dp[1] = 1;

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

char c = s.charAt(i);

char p = s.charAt(i – 1);

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

return 0;

}

if (p == ‘0’) {

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

} else if (p == ‘1’) {

if (c == ‘0’) {

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

} else {

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

}

} else if (p == ‘2’) {

if (c == ‘0’) {

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

} else if (c <= ‘6’) {

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

} else {

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

}

} else {

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

}

}

return dp[s.length()];}

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

Java经典算法:解码方式

文章来源:智云一二三科技

文章标题:Java经典算法:解码方式

文章地址:https://www.zhihuclub.com/183172.shtml

关于作者: 智云科技

热门文章

评论已关闭

1条评论

  1. You could certainly see your expertise in the work you write. The arena hopes for more passionate writers like you who aren’t afraid to mention how they believe. At all times go after your heart. “Billy Almon has all of his inlaw and outlaws here this afternoon.” by Jerry Coleman.

网站地图