{
  "type": "code_options",
  "author": "https://github.com/qiyuangong/leetcode",
  "source": "solution.md",
  "exercise_id": "88def27bcaee46c4915df546be00d843",
  "keywords": "字符串,动态规划",
  "title": "解码方法",
  "desc": [
    {
      "content": "\n<p>一条包含字母 <code>A-Z</code> 的消息通过以下映射进行了 <strong>编码</strong> ：</p>\n<pre>'A' -> 1'B' -> 2...'Z' -> 26</pre>\n<p>要 <strong>解码</strong> 已编码的消息，所有数字必须基于上述映射的方法，反向映射回字母（可能有多种方法）。例如，<code>\"11106\"</code> 可以映射为：</p>\n<ul>\n<li><code>\"AAJF\"</code> ，将消息分组为 <code>(1 1 10 6)</code></li>\n<li><code>\"KJF\"</code> ，将消息分组为 <code>(11 10 6)</code></li>\n</ul>\n<p>注意，消息不能分组为  <code>(1 11 06)</code> ，因为 <code>\"06\"</code> 不能映射为 <code>\"F\"</code> ，这是由于 <code>\"6\"</code> 和\n<code>\"06\"</code> 在映射中并不等价。\n</p>\n<p>给你一个只含数字的 <strong>非空 </strong>字符串 <code>s</code> ，请计算并返回 <strong>解码</strong> 方法的 <strong>总数</strong> 。</p>\n<p>题目数据保证答案肯定是一个 <strong>32 位</strong> 的整数。</p>\n<p> </p>\n<p><strong>示例 1：</strong></p>\n<pre><strong>输入：</strong>s = \"12\"<strong><br />输出：</strong>2<strong><br />解释：</strong>它可以解码为 \"AB\"（1 2）或者 \"L\"（12）。</pre>\n<p><strong>示例 2：</strong></p>\n<pre><strong>输入：</strong>s = \"226\"<strong><br />输出：</strong>3<strong><br />解释：</strong>它可以解码为 \"BZ\" (2 26), \"VF\" (22 6), 或者 \"BBF\" (2 2 6) 。</pre>\n<p><strong>示例 3：</strong></p>\n<pre><strong>输入：</strong>s = \"0\"<strong><br />输出：</strong>0<strong><br />解释：</strong>没有字符映射到以 0 开头的数字。含有 0 的有效映射是 'J' -> \"10\" 和 'T'-> \"20\" 。由于没有字符，因此没有有效的方法对此进行解码，因为所有数字都需要映射。</pre>\n<p><strong>示例 4：</strong></p>\n<pre><strong>输入：</strong>s = \"06\"<strong><br />输出：</strong>0<strong><br />解释：</strong>\"06\" 不能映射到 \"F\" ，因为字符串含有前导 0（\"6\" 和 \"06\" 在映射中并不等价）。</pre>\n<p> </p>\n<p><strong>提示：</strong></p>\n<ul>\n<li><code>1 <= s.length <= 100</code></li>\n<li><code>s</code> 只包含数字，并且可能包含前导零。</li>\n</ul>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "python"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "python"
      }
    ],
    [
      {
        "content": "",
        "language": "python"
      }
    ],
    [
      {
        "content": "",
        "language": "python"
      }
    ]
  ],
  "template": {
    "content": "class Solution(object):\n\tdef numDecodings(self, s):\n\t\t\"\"\"\n\t\t:type s: str\n\t\t:rtype: int\n\t\t\"\"\"\n\t\tls = len(s)\n\t\tif ls == 0:\n\t\t\treturn 0\n\t\tdp = [0] * ls\n\t\tfor index in range(ls):\n\t\t\tif index >= 1 and int(s[index - 1:index + 1]) < 27 and int(s[index - 1:index + 1]) >= 10:\n\t\t\t\tif index == 1:\n\t\t\t\t\tdp[index] = 1\n\t\t\t\telse:\n\t\t\t\t\tdp[index] += dp[index - 2]\n\t\t\tif int(s[index]) != 0:\n\t\t\t\tif index == 0:\n\t\t\t\t\tdp[index] = 1\n\t\t\t\telse:\n\t\t\t\t\tdp[index] += dp[index - 1]\n\t\treturn dp[ls - 1]\n# %%\ns = Solution()\nprint(s.numDecodings(s = \"12\"))",
    "language": "python"
  },
  "node_id": "dailycode-f705496a584747d69e1008f88a6e4bf8",
  "license": "csdn.net",
  "created_at": 1637894159,
  "topic_link": "https://bbs.csdn.net/topics/600469925"
}