亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現(xiàn)在的位置是:首頁 > 技術(shù)閱讀 >  每日一題:解碼方法

每日一題:解碼方法

時間:2024-02-14

題目91:解碼方法

一條包含字母 A-Z 的消息通過以下方式進(jìn)行了編碼:

'A' -> 1'B' -> 2...'Z' -> 26
給定一個只包含數(shù)字的非空字符串,請計算解碼方法的總數(shù)。

示例1:

輸入: "12"輸出: 2解釋: 它可以解碼為 "AB"1 2)或者 "L"12)。
示例2:
輸入: "226"輸出: 3解釋: 它可以解碼為 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。
分析

dp問題,用dp[i]表示str[0-i]的解碼方法總數(shù),則有

1. 若s[i]等于'0',如果s[i-1]等于'1'或者'2',則dp[i]=dp[i-2],否則return 0。

2. 若s[i-1]s[i]兩個字符可以轉(zhuǎn)換為整數(shù)為1-26,則dp[i]=dp[i-1]+dp[i-2],如果不可以轉(zhuǎn)換,則dp[i]=dp[i-1]。

代碼

class Solution {public:    int numDecodings(string s) {        if (s.empty()) return 0;        if (s[0] == '0') return 0;        vector<int> dp(s.size());        dp[0] = 1;        for (int i = 1; i < s.size(); ++i) {            if (s[i] == '0') {                if (s[i-1] == '1' || s[i-1] == '2') {                    dp[i] = (i-2 >= 0) ? dp[i-2] : 1;                } else {                    return 0;                }            } else {                if (s[i-1] == '1' || (s[i-1] == '2' && s[i] >= '0' && s[i] <= '6')) {                    int tem = (i-2 >= 0) ? dp[i-2] : 1;                    dp[i] = dp[i-1] + tem;                } else {                    dp[i] = dp[i-1];                }            }        }        return dp[s.size()-1];    }};




一文讓你搞懂設(shè)計模式

RAII妙用之ScopeExit

深入淺出虛擬內(nèi)存

深入淺出虛擬內(nèi)存(二)繪制虛擬內(nèi)存排布圖

深入淺出虛擬內(nèi)存(三)堆內(nèi)存分配及malloc實現(xiàn)原理

RAII妙用之計算函數(shù)耗時

一文吃透C++11中auto和decltype知識點

主站蜘蛛池模板: 文昌市| 河北省| 阳信县| 东乡族自治县| 炎陵县| 汪清县| 齐河县| 瓮安县| 鸡泽县| 沙河市| 松滋市| 民勤县| 平泉县| 高平市| 永兴县| 大化| 神农架林区| 贵阳市| 宁晋县| 名山县| 吴江市| 康保县| 阿拉善左旗| 蒙山县| 奉节县| 大安市| 龙胜| 贞丰县| 苏尼特右旗| 太和县| 石狮市| 台州市| 丹凤县| 湖口县| 沛县| 保定市| 南川市| 年辖:市辖区| 久治县| 泽库县| 加查县|