我正在尝试编码蝙蝠问题repeatFront:
给定一个字符串和一个int n,返回一个字符串,该字符串由的前n个字符组成
字符串,然后是字符串的前n-1个字符,依此类推。您
可以假设n在0到字符串的长度(包括首尾)之间(即n
= 0并且n
repeatFront("Chocolate", 4) → "ChocChoChC"
repeatFront("Chocolate", 3) → "ChoChC"
repeatFront("Ice Cream", 2) → "IcI"
这是我正在尝试的代码:
public String repeatFront(String str, int n) {
if(n==0) {
return str;
}
sub = str.substring(0,n);
sub = sub+repeatFront(sub,n-1);
return sub;
}
我得到的错误是我的字符串末尾有一个额外的字符。第一个示例将给出“ ChocChoChCC”,第二个示例将给出“ ChoChCC”,依此类推。从概念上讲,我只想知道我在做错什么以及如何解决。
最佳答案
啊,我发现了你的问题。
如果n == 0
,则只能返回空字符串。
返回str
将第二次返回该多余的最后一个字母,因为调用repeatFront(Ch, 1)
和repeatFront(C, 0)
都返回C
。
通过将n==0
的返回值更改为return "";
进行修复:
if(n==0) {
return "";
}