91. 解码方法

mac2026-10-02  0

先不说为啥我写了一个空间复杂度为n的,就说说我之前做过这道题为啥这回还是出了问题。 这个绑定到概念我理解的不是很好。绑定不是说给前面到数字上个标志位,变成二维vector,而是说选择加往前数几位的数字。 这回我就没再写递归。因为如果你也是顺着动态规划一步一步过来的,这道题自然而然就能想出dp了,不用递归了。

int numDecodings(string a) { if(0==a.length()) return 0; if('0'==a[0]) return 0; vector<int>bp((int)a.length(),0); bp[0]=1; if(1==a.length()) return 1; for(int i=1;i<(int)a.length();++i) { if('0'==a[i]) { if(a[i-1]!='1' && a[i-1]!='2') return 0; else { if(1==i) { bp[i]=1; } else { bp[i]=bp[i-2]; } } } else { if(a[i-1] == '1' || ('2'==a[i-1] && a[i]<='6')) { if(1==i) bp[i]=2; else bp[i]=bp[i-1]+bp[i-2]; } else { bp[i]=bp[i-1]; } } } return *(bp.end()-1); }

如果我的文章帮到了你请点一下赞,我想知道我帮助了多少人

最新回复(0)