Java 解码字符串的方法有多种?

Java 解码字符串的方法有多种?,java,algorithm,data-structures,Java,Algorithm,Data Structures,我正在解决需要解码字符串的问题 包含A-Z字母的消息正在编码为数字 使用以下映射: ‘A’->1 ‘B’->2 ‘Z’->26 给定只包含数字的非空字符串,确定总数 解码它的方法有很多 例1: 输入:“12” 产出:2 说明:它可以被解码为“AB”(12)或“L”(12) 例2: 输入:“226” 产出:3 说明:它可以被解码为“BZ”(226)、“VF”(226)或“BBF”(26) 我提出了下面的递归方法,但它为这个输入“227”提供了错误的输出。输出应为“2”,但我的程序给出了“3”:

我正在解决需要解码字符串的问题

包含A-Z字母的消息正在编码为数字 使用以下映射:

‘A’->1

‘B’->2

‘Z’->26

给定只包含数字的非空字符串,确定总数 解码它的方法有很多

例1:

输入:“12”

产出:2

说明:它可以被解码为“AB”(12)或“L”(12)

例2:

输入:“226”

产出:3

说明:它可以被解码为“BZ”(226)、“VF”(226)或“BBF”(26)

我提出了下面的递归方法,但它为这个输入“227”提供了错误的输出。输出应为“2”,但我的程序给出了“3”:

公共静态整数解码方式(字符串数据){
返回帮助程序(data,data.length());
}
私有静态int-helper(字符串数据,int-k){
如果(k==0)
返回1;
int s=data.length()-k;
如果(数据字符='0')
返回0;
int result=helper(数据,k-1);
如果此行中的(k>=2&&Integer.parseInt(data.substring(0,2))-

if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {


2,2和7,而不是你想象中的22和7?我用示例编辑了我的问题。基本上我的输入有两种方式:
27
27
,但我的程序给我3作为输出。如果
k
为0,为什么返回
1
?顺便问一下,为什么需要
k
?不太明白。你能解释一下吗?
数据始终是
“227”
或任何可能的输入。因此
数据。子字符串(0,2)
总是会产生
22
,它总是小于
26
,因此您要计算3而不是2。例如367呢?它应该返回3,6和7,但是上面的代码只检查3?这应该可以工作:data.substring(data.length()-k,data.length()-k+1)@MS90我可能有一个off by one错误,但即使如此,我知道第二个索引必须比第一个大2,因为子字符串排除了第二个索引。好的,但是在这种情况下会怎么样:1212236->12 21,在这种情况下,中间的2被省略?@DillonDavis
if (k >= 2 && Integer.parseInt(data.substring(0, 2)) <= 26) {
data.substring(data.length()-k, data.length()).substring(0, 2)
data.substring(data.length()-k, data.length()-k+2)