以递归方式在空格中添加星号

时间:2013-11-22 17:04:34

标签: java string recursion

给定一个字符串,递归计算一个新字符串,其中所有相邻的字符现在用“*”分隔。

实施例: allStar(“你好那里”)→“*你好*那里*”

这是我到目前为止的代码,但我不认为我正在解决这个问题。

   public static String allStar(String word)


    s = "";

   if (word.equals(s))
   {
     return null;
   }


  else if (word.charAt(0) == ' ')
    {
    //Recursion should take place here
       return "*" + allStar(word.substring(1))


       //another recursive call, but I am not sure what to do!

     }

3 个答案:

答案 0 :(得分:1)

如果第一个char不是空格,请考虑您要执行的操作。你不想修改它。获取未修改的子字符串中的第一个字符,然后进行递归调用:

else {
    return word.substring(0, 1) + allStar(word.substring(1));
}

答案 1 :(得分:0)

我建议你尝试这样的事情;请注意,从您的标准开始停止递归是一个非常好的主意。

public static String allStar(String word) {
  // null or the empty string, bail out (e.g. stop recursion).
  if (word == null || word.length() < 1) {
    return word;
  }
  // The first character.
  char c = word.charAt(0);
  if (c == ' ') {
    // replace a ' ' with a '*' and recurse.
    return "*" + allStar(word.substring(1));
  }
  // pass the character through and recurse.
  return c + allStar(word.substring(1));
}

// Demonstrate that it works.
public static void main(String[] args) {
  System.out.println(allStar(" hello there "));
}

答案 2 :(得分:0)

这是一个简单的解决方法:)

public String allStar(String str) {

  if(str.isEmpty()) return "";

  String sub = ((str.length()==1)?str.substring(0,1):str.substring(0,1) + "*");

  return sub + allStar(str.substring(1));


}