solution.json 3.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
{
  "type": "code_options",
  "author": "https://github.com/begeekmyfriend/leetcode",
  "source": "solution.md",
  "exercise_id": "d9fd29e18762417cbf523fbf4fb0aa5b",
  "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": "cpp"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ],
    [
      {
        "content": "",
        "language": "cpp"
      }
    ]
  ],
  "template": {
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\nstatic int numDecodings(char *s)\n{\n\tint len = strlen(s);\n\tif (len == 0)\n\t{\n\t\treturn 0;\n\t}\n\tint a = 1;\n\tint b = s[0] == '0' ? 0 : a;\n\tint c = b;\n\tfor (int i = 2; i <= len; i++)\n\t{\n\t\tc = s[i - 1] == '0' ? 0 : b;\n\t\tint num = (s[i - 2] - '0') * 10 + (s[i - 1] - '0');\n\t\tif (num >= 10 && num <= 26)\n\t\t{\n\t\t\tc += a;\n\t\t}\n\t\ta = b;\n\t\tb = c;\n\t}\n\treturn c;\n}\nint main(int argc, char **argv)\n{\n\tif (argc != 2)\n\t{\n\t\tfprintf(stderr, \"Usage: ./test number\\n\");\n\t\texit(-1);\n\t}\n\tprintf(\"%d\\n\", numDecodings(argv[1]));\n\treturn 0;\n}",
    "language": "cpp"
  },
  "node_id": "dailycode-51ab560c60e241f9ba4b1f449db8f4fc",
  "license": "csdn.net",
  "created_at": 1637894158,
  "topic_link": "https://bbs.csdn.net/topics/600469925"
}