[英]number of ways to decode a string?
我正在解决需要解码字符串的问题..
使用以下映射将包含来自 AZ 的字母的消息编码为数字:
'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个只包含数字的非空字符串,确定解码它的方法总数。
示例 1:
输入:“12”
输出:2
说明:可以解码为“AB”(1 2)或“L”(12)。
示例 2:
输入:“226”
输出:3
解释:可以解码为“BZ”(2 26)、“VF”(22 6)或“BBF”(2 2 6)。
我想出了下面的递归方法,但它为这个输入“227”提供了错误的输出。 输出应为“2”,但我的程序给出“3”:
public static int decodeWays(String data) {
return helper(data, data.length());
}
private static int helper(String data, int k) {
if (k == 0)
return 1;
int s = data.length() - k;
if (data.charAt(s) == '0')
return 0;
int result = helper(data, k - 1);
if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {
result += helper(data, k - 2);
}
return result;
}
我的上述方法有什么问题?
在这一行——
if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {
您始终检查相同的 2 位数字data.substring(0, 2)
。 而是考虑类似的东西
data.substring(data.length()-k, data.length()).substring(0, 2)
或者
data.substring(data.length()-k, data.length()-k+2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.