给定一个字符串,递归计算一个新字符串,其中所有相邻的字符现在用“*”分隔。
实施例: 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!
}
答案 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));
}