我正在尝试编码蝙蝠问题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 "";
}

10-06 02:39