设为首页 加入收藏

TOP

leetcode笔记:Decode Ways
2015-11-21 00:55:03 来源: 作者: 【 】 浏览:1
Tags:leetcode 笔记 Decode Ways

一. 题目描述

A message containing letters from A-Z is being encoded to numbers using the following mapping:

'A' -> 1
'B' -> 2
...
'Z' -> 26

Given an encoded message containing digits, determine the total number of ways to decode it.
For example, Given encoded message “12”, it could be decoded as “AB” (1 2) or “L” (12).
The number of ways decoding “12” is 2.

二. 题目分析

题目的大意是,给你一串数字,解码成相应的英文字母。类似爬楼梯问题Climbing Stairs,可使用动态规划来完成。

三. 示例代码

#include 
   
     #include 
    
      using namespace std; class Solution { public: int numDecodings(const string &s) { if (s.empty() || s[0] == '0') return 0; int prev = 0; int cur = 1; // 长度为 n 的字符串,有 n+1 个阶梯 for (size_t i = 1; i <= s.size(); ++i) { if (s[i-1] == '0') cur = 0; if (i < 2 || !(s[i - 2] == '1' || (s[i - 2] == '2' && s[i - 1] <= '6'))) prev = 0; int tmp = cur; cur = prev + cur; prev = tmp; } return cur; } };
    
   

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇LeetCode 26 Remove Duplicates f.. 下一篇LeetCode 27 Remove Element(移..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: