Java 在递归字符串中向左移动数字
任务是使用递归将字符串中的数字移到字符串的开头。字符串中始终只包含一个数字。因此,如果我将“ba3nana”输入代码,它应该返回“3banana”。已经做了一些递归任务,但这一个我被卡住了。我试过,我猜已经有50种不同的组合,但到目前为止,我的代码只返回“banana3”,所以我用我的数字反其道而行之。我知道这段代码将每个数字向右移动,但仍然无法计算出正确的组合,以获得左侧数字的输出。如果我改变一切,一切都会颠倒,变成“3ananab” 方法的调用如下所示:Java 在递归字符串中向左移动数字,java,recursion,Java,Recursion,任务是使用递归将字符串中的数字移到字符串的开头。字符串中始终只包含一个数字。因此,如果我将“ba3nana”输入代码,它应该返回“3banana”。已经做了一些递归任务,但这一个我被卡住了。我试过,我猜已经有50种不同的组合,但到目前为止,我的代码只返回“banana3”,所以我用我的数字反其道而行之。我知道这段代码将每个数字向右移动,但仍然无法计算出正确的组合,以获得左侧数字的输出。如果我改变一切,一切都会颠倒,变成“3ananab” 方法的调用如下所示: System.out.println
System.out.println(shiftDigitLeft("ba3nana"));
这是迄今为止返回banana3的代码:
private static String shiftDigitLeft(String text) {
if (text.isEmpty()) {
return text;
} else {
if (text.charAt(0) >= '\u0030' && text.charAt(0) <= '\u0039') {
return shiftDigitLeft(text.substring(1)) + text.charAt(0);
} else {
return text.charAt(0) + shiftDigitLeft(text.substring(1));
}
}
}
私有静态字符串shiftDigitLeft(字符串文本){
if(text.isEmpty()){
返回文本;
}否则{
如果(text.charAt(0)>='\u0030'&&text.charAt(0)执行相同操作,但从最后一个字符开始并向后移动:
private static String shiftDigitLeft(String text) {
if (text.isEmpty()) {
return text;
} else {
if (text.charAt(text.length() - 1) >= '\u0030' && text.charAt(text.length() - 1) <= '\u0039') {
return text.charAt(text.length() - 1) + shiftDigitLeft(text.substring(0, text.length() - 1));
} else {
return shiftDigitLeft(text.substring(0, text.length() - 1)) + text.charAt(text.length() - 1);
}
}
}
私有静态字符串shiftDigitLeft(字符串文本){
if(text.isEmpty()){
返回文本;
}否则{
如果(text.charAt(text.length()-1)>='\u0030'&&text.charAt(text.length()-1)非常感谢!现在看到它让我明白我做错了什么,但肯定我需要更多的时间才能得到这个结果。