Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归方法返回字符串,字符串开头带有字符_Java_String_Recursion_Methods_Char - Fatal编程技术网

Java 递归方法返回字符串,字符串开头带有字符

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

这个问题不言自明……设计一个名为startCharString str,char c的方法。这是我在这里找到的代码,但它在字符串的末尾插入了char。我无法反复思考。我理解这段代码,但理解得不够透彻,无法操纵它,将字符放在开头。感谢任何形式的帮助

输入示例:

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指南,以便