gpt4 book ai didi

java - 递归方法返回一个字符串逆序需要String和Index位置作为参数

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:26 25 4
gpt4 key购买 nike

我正在尝试使用递归来反转字符串,但特殊之处在于我必须从指定索引开始返回该索引中包含的字符,然后反转该索引后的剩余字符串并将两者合并为一个输出。我尝试这样做,有时它会给出数组越界异常,有时最终会出现比应有的字母更多的字母,例如hellooo的测试结果为lloooooo。任何有关调整此代码的帮助将不胜感激,因为当我知道需要第二个参数时,我真的迷失了。

  public class ReverseTest
{
public static void main(String[] argv)
{
System.out.println(reverse("a", 0));
System.out.println(reverse("hi", 0));
System.out.println(reverse("helloooo", 2));
}


public final static String reverse(String s, int ind)
{
int length = s.length(); //get string length

if (length <= 1) //if length is 1 or lower just repeat the string nothing to do
return s; //return string
else //if we have something to work with...
return s.substring(ind) + reverse(s.substring(ind + 1, length - 1), ind); //return substring of necessary index + reverse the rest and display in one string
}
}

最佳答案

不确定您的版本有什么问题,但我根据我认为直观的实现构建了自己的版本:

private static String reversePartially(String initial, int target) {
return reversePartially(initial, target, target);
}

private static String reversePartially(String initial, int index, int target) {
// if we are at the target index put the character at the front
if(index == target) return initial.charAt(target) + reversePartially(initial, index + 1, target);
// if we are in the second part return the characters reversed
if(index > target) return reversePartially(initial, index + 1, target) + initial.charAt(index);
// base condition
if(index == initial.length()) return "";
return "";
}

关于java - 递归方法返回一个字符串逆序需要String和Index位置作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com