San*_*ofa 2 java string recursion
如何以递归方式而不是使用替换方法来解决此问题?我正在努力改进递归方法。
给定一个字符串,递归(无循环)计算一个新字符串,其中所有小写的“x”字符都已更改为“y”字符。
changeXY("codex") ? "codey"
changeXY("xxhixx") ? "yyhiyy"
changeXY("xhixhix") ? "yhiyhiy"
Run Code Online (Sandbox Code Playgroud)
我就是这样作弊解决的,试图查看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;
}
Run Code Online (Sandbox Code Playgroud)
关于如何以递归方式做到这一点的任何想法?
这是一个额外的练习,我也不知道该怎么做。感谢您的帮助!!!
给定一个字符串,递归计算一个新字符串,其中所有 'x' 字符都已被删除。
noX("xaxb") ? "ab"
noX("abc") ? "abc"
noX("xx") ? ""
Run Code Online (Sandbox Code Playgroud)
递归几乎总是由两件事组成:
停止递归的条件。
假设我们可以解决一个较小的问题,如何使用该假设解决当前的问题。
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));
}
Run Code Online (Sandbox Code Playgroud)
一旦你意识到这是如何工作的,其他练习就非常容易了。
| 归档时间: |
|
| 查看次数: |
3829 次 |
| 最近记录: |