leecode第九十一题(解码方法)
class Solution { public: void jiance(string s,vector<int>& res,int& index) { int len=s.size(); if(len==0)//如果是末位,就填1 { res.push_back(1); index++; return; } jiance(s.substr(1,len-1),res,index); if(s[0]=='0')//如果当前位置是0,就填0 { res.push_back(0); index++; return; } if(index==1)//对于1个字母,只有一种 res.push_back(1); else if((s[0]-'0')*10+(s[1]-'0')<27)//对于0-27内的数字,有两种,即前两个位置的值相加 res.push_back(res[index-1]+res[index-2]); else//对于大于27的,只有一种方式 res.push_back(res[index-1]); index++; } int numDecodings(string s) { vector<int> res; int index=0; jiance(s,res,index); return res[index-1]; } };
分析:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。难在分析上。

更多精彩