Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40236
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 372
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-12 23:27
文章分类

全部博文(37)

文章存档

2014年(5)

2013年(32)

我的朋友

分类: C/C++

2013-12-26 14:25:18

简单。就不解释了。不加点中文会被认为advertise...



点击(此处)折叠或打开

  1. class Solution {
  2. public:
  3.     int numDecodings(string s) {
  4.         if(s.empty()) return 0;
  5.         if(s[0]=='0') return 0;
  6.         if(s.length()<2) return 1;
  7.         vector<int> num(s.length()+1,1);
  8.         for(int i=1;i<s.length();i++)
  9.         {
  10.             if('0'==s[i])
  11.             {
  12.                 if('0'==s[i-1]||s[i-1]>'2') return 0;
  13.                 else num[i+1]=num[i-1];
  14.                 continue;
  15.             }
  16.             int val=10*(s[i-1]-'0')+s[i]-'0';
  17.             if(val>10&&val<=26&&val!=20) num[i+1]=num[i]+num[i-1];
  18.             else if(val==10||val==20) num[i+1]=num[i-1];
  19.             else num[i+1]=num[i];
  20.         }
  21.         return num[s.length()];
  22.     }
  23. };

阅读(198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~