【迭代+动态规划】把数字翻译成字符串
2026/7/1 18:48:16 网站建设 项目流程

求解代码

publicintsolve(Stringnums){if(nums==null||nums.length()==0||nums.charAt(0)=='0'){return0;}intn=nums.length();intprevPrev=1;intprev=1;for(inti=2;i<=n;i++){intcurr=0;charcurrChar=nums.charAt(i-1);charprevChar=nums.charAt(i-2);if(currChar!='0'){curr+=prev;}inttwoDigit=Integer.parseInt(nums.substring(i-2,i));if(twoDigit>=10&&twoDigit<=26){curr+=prevPrev;}prevPrev=prev;prev=curr;}returnprev;}

小贴士

变量对应传统DP数组通俗含义
prevPrevdp[i-2]i-2个字符的解码方式数
prevdp[i-1]i-1个字符的解码方式数
currdp[i]临时变量,存储「前i个字符」的解码方式数

int prevPrev = 1对应dp[0]=1,也就是空字符串的解码方式数,没有实际解码意义,只为让组合解码的计算成立(类似于乘法中的 “1”)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询