LeetCode面试题:解码方法

发布时间:2023-05-04 10:42:33

  1.简述:

  通过以下映射编码包含字母A-Z的消息:'A' -> "1"'B' -> "2"...'Z' -> "26"

  要解码已编码的信息,所有数字必须反向映射回字母(可能有多种方法)。例如,“11106”可以映射为:

  "AAJF",将消息分组成(1 1 10 6)

  "KJF将消息分组成(11 10 6)

  请注意,消息不能分组(1) 11 06)因为“06”不能映射为“F这是因为“6”和“06”在映射中并不等价。

  给你一个非空字符串s,只有数字,请计算并返回解码方法的总数。

  问题数据保证答案必须是32 位的整数。

  示例 1: 输入:s = “12”输出:2解释:可以解码为 "AB"(1 2)或者 "L"(12)。

  示例 2: 输入:s = “226”输出:3解释:可解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

  示例 3: 输入:s = “06”输出:0解释:“06” 无法映射到 "F" ,因为有前导零(“6”) 和 "06" 不等价)。

  2.实现代码: class Solution { public int numDecodings(String s) { int n = s.length(); int[] f = new int[n + 1]; f[0] = 1; for (int i = 1; i <= n; ++i) { if (s.charAt(i - 1) != '0') { f[i] += f[i - 1]; } if (i > 1 && s.charAt(i - 2) != '0' && ((s.charAt(i - 2) - '0') * 10 + (s.charAt(i - 1) - '0') <= 26)) { f[i] += f[i - 2]; } } return f[n]; }}

上一篇 Android内存管理
下一篇 LeetCode程序员面试金典:组合总和 II

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题