gpt4 book ai didi

java - Codingbat递归练习(java)

转载 作者:行者123 更新时间:2023-12-03 06:21:35 26 4
gpt4 key购买 nike

如何递归地解决这个问题,而不是使用替换方法?我正在尝试改进递归方法。

给定一个字符串,递归计算(无循环)一个新字符串,其中所有小写“x”字符已更改为“y”字符。

changeXY("codex") → "codey"
changeXY("xxhixx") → "yyhiyy"
changeXY("xhixhix") → "yhiyhiy"

我用这种方法作弊并解决了这个问题,并尝试查看Java String方法replace的源代码,但我不明白它。这是我的方法。

public String changeXY(String str) {
int len = str.length();
int i = 0;
String changedStr = str.replace("x","y");


if (len == 0)
return str;

return changedStr;

}

关于如何以递归方式执行此操作有什么想法吗?

这是一个我也不知道如何做的额外练习。谢谢您的帮助!!!

给定一个字符串,递归计算一个新字符串,其中所有“x”字符已被删除。

noX("xaxb") → "ab"
noX("abc") → "abc"
noX("xx") → ""

最佳答案

递归几乎总是由两件事组成:

停止递归的条件。

假设我们可以解决一个较小的问题,如何使用该假设解决当前的问题。

public String changeXY(String str) {

// when to stop
if (str.length() == 0){
return str;
}

// handle the "special case" using an assumption we can solve str.substring(1)
if (str.charAt(0) == 'x'){
return 'y' + changeXY(str.substring(1));
}
// handle the "simple" case using an assumption we can solve str.substring(1)
return str.charAt(0) + changeXY(str.substring(1));
}

一旦您了解其工作原理,其他练习就会变得非常简单。

关于java - Codingbat递归练习(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749981/

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