大家好,欢迎来到IT知识分享网。
题目:
代码:
class Solution {
public: int numDecodings(string s) {
int n=s.size(); int temp,a,b; if(s[0]=='0') return 0; a=1; if(n==1) return 1; if(s[1]=='0'){
if(s[0]=='1'||s[0]=='2') b=1; else return 0; } else if(s[1]=='7'||s[1]=='8'||s[1]=='9'){
if(s[0]=='1') b=2; else b=1; } else {
if(s[0]=='1'||s[0]=='2') b=2; else b=1; } for(int i=2;i<n;i++){
if(s[i]=='0'){
if(s[i-1]=='1'||s[i-1]=='2') temp=a; else return 0; } else if(s[i]=='7'||s[i]=='8'||s[i]=='9'){
if(s[i-1]=='1') temp=a+b; else temp=b; } else {
if(s[i-1]=='1'||s[i-1]=='2') temp=a+b; else temp=b; } a=b;b=temp; } return b; } };
思路:采用动态规划,考虑清楚状态转移方程以及初始条件即可。
运行结果:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153463.html