Java 递归方法返回字符串,字符串开头带有字符
这个问题不言自明……设计一个名为startCharString str,char c的方法。这是我在这里找到的代码,但它在字符串的末尾插入了char。我无法反复思考。我理解这段代码,但理解得不够透彻,无法操纵它,将字符放在开头。感谢任何形式的帮助 输入示例:Java 递归方法返回字符串,字符串开头带有字符,java,string,recursion,methods,char,Java,String,Recursion,Methods,Char,这个问题不言自明……设计一个名为startCharString str,char c的方法。这是我在这里找到的代码,但它在字符串的末尾插入了char。我无法反复思考。我理解这段代码,但理解得不够透彻,无法操纵它,将字符放在开头。感谢任何形式的帮助 输入示例: startChar("Apple",'p') 输出: ppale 代码 public static String chrToLast(String str, char ch) { //This if statement deta
startChar("Apple",'p')
输出:
ppale
代码
public static String chrToLast(String str, char ch) {
//This if statement details the end condition
if(str.length() < 1) {
return "";
}
String newString = str.substring(1); //Create new string without first
character
if(str.indexOf(ch) == 0) { //This happens when your character is found
return chrToLast(newString, ch) + ch;
} else { //This happens with all other characters
return str.charAt(0) + chrToLast(newString, ch);
}
}
那么
public static void main(String[] args) {
String s = startChar("Apple", 'p');
System.out.println("");
}
public static String startChar(String str, char ch) {
return startChar(str,ch,"","");
}
private static String startChar(String str, char ch, String acc, String chs) {
//This if statement details the end condition
if (str.length() < 1) {
return chs + acc;
}
String newString = str.substring(1); //Create new string without first character
if(str.charAt(0) == ch) { //This happens when your character is found
return startChar(newString, ch,acc, chs + ch);
} else { //This happens with all other characters
return startChar(newString, ch,acc+str.charAt(0), chs);
}
}
这是带有辅助函数的递归函数
更新:您必须知道/记住,您可以在递归调用之前和之后处理数据,但请尝试在最后编写递归调用,通常大多数语言在这种情况下都会进行优化
在本例中,我们使用累加器累积处理后的数据,然后在基本步骤中,我们将这些累加器处理到最终输出。我不明白这段代码的目的是什么;你能提供更多的例子吗?为什么输出是ppable?我希望它返回Alepp。将角色的所有实例移到末尾不是一个好主意吗?所以p字符都从原来的位置出来,然后走到最后。哦,我明白了。是否要将其反转,以便将字符移到开头而不是结尾?所以预期的输出是可实现的,对吧?是的!例如考虑输入:香蕉,A的输出应该是AAABNN。把所有的a都去掉,放在字符串的开头。请在文章中添加所有的解释和例子,而不是评论。很好的解决方案。我很难掌握递归,而你似乎是一时兴起才想出这个解决方案的。我认为我的错是通过尝试和错误来思考,而这种尝试和错误从来都不起作用。虽然这是真的,但它使用了一个辅助功能。很高兴得到反馈,比如优秀的解决方案。也请遵循SO指南,以便