我已经看到很多关于使用递归来反转字符串的帖子,但我喜欢使用我自己的编码风格来正确理解它。无论如何这里是我的代码。
private static String reverse (String s){
String rev = "";
int index = s.length()-1;
if(index >= 0){
rev += s.charAt(index);
index--;
rev += reverse(rev);
}
return rev;
}
当索引为-1时,循环停止时,索引基本上只对每个字符保持一致。它会读取字符串的最后一个可能字符,但此行中存在错误。
rev += rev(str)
这是迭代方法
String dog = "dog";
String rev = "";
int index = dog.length()-1;
while(index >= 0){
rev+=dog.charAt(index);
index--;
}
out.println(rev);
答案 0 :(得分:1)
我相信当方法调用自身时,你会重置索引的值。也许更好的方法是使用重载方法,其中原始调用传入字符串进行处理,然后其余调用调用一个方法,在该方法中传入正在构建的字符串以及正在处理的字符串的剩余部分
答案 1 :(得分:0)
递归步骤不包含变异字符串。您需要传递原始字符串的子字符串。
writer.close();
答案 2 :(得分:-1)
(代表OP发表答案)。
现在已经解决了。非常感谢你,我的索引太晚了并传递了负数。
private static String reverse (String s) {
int index = s.length();
index--;
String rev = "";
if(index >= 0){
rev += s.charAt(index);
rev = rev + reverse(s.substring(0,index));
}
return rev;
}