【ATT】【second】Decode Ways

好多特殊情况。第二次做还是错了很多次,要好好考虑各种情况。

    int numDecodings(string s) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        if(s.empty()||s[0]=='0')
            return 0;
        int cnt1 = 1, cnt2 = 1;
        int cnt = 1;  //注意,初始时1.
        for(int i=1;i<s.size();i++)
        {
            if(s[i]=='0')
            {
                if(s[i-1]>='1'&&s[i-1]<='2')
                    cnt = cnt1;
                else
                    return 0;
            }else if(s[i-1]=='1'||(s[i-1]=='2'&&s[i]>=1&&s[i]<='6'))
                cnt = cnt1+cnt2;
            else
                cnt = cnt2;
            
            cnt1 = cnt2;
            cnt2 = cnt;
        }
        return cnt;
        
        
    }

  

posted @ 2013-10-25 15:59  summer_zhou  阅读(157)  评论(0编辑  收藏  举报