我正在尝试使用递归来反转字符串,但特殊的转折是我必须从指定的索引开始返回包含在索引中的字符,然后反转该索引之后的剩余字符串并将两者组合成一个输出。我试图这样做,有时它会给出一个数组越界异常,有时会得到比它应该有的更多的字母,比如这个 helloooo 的测试以 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
}
}