我希望使用递归方法从字符串中删除每秒钟的字符。
public static void main(String[] args) {
System.out.println(everySecond("wonderful"));
}
public static String everySecond(String s) {
if (s.length() % 2 != 0 ) {
System.out.print(s.substring(0,1));
}
if (s.length() <= 1) {
return s;
}
else {
String simpler = everySecond(s.substring(1))+ s.charAt(0);
return "";
}
}
}目前,这个程序可以满足我的需要。但是,我想在子递归调用String simpler = everySecond(s.substring(1))+ s.charAt(0); return "";中包含所有内容,并删除下面的代码。
if (s.length() % 2 != 0 ) {
System.out.print(s.substring(0,1));
}我对Java相当陌生,所以如果答案是显而易见的,我很抱歉。我想我忽略了一些非常基本的解决方案。
发布于 2020-02-06 15:32:42
如果字符串的剩余长度小于2,那么我们就不需要再找到任何要跳过的字符了。否则,我们需要初始字符,然后是第二个字符(跳过的一个)之后的字符串的其余部分,因此我这样做:
public static String removeEverySecondChar(String str) {
if(str.length() < 2) {
return str;
}
return str.substring(0,1) + removeEverySecondChar(str.substring(2));
}输入:Wonderful
输出:Wnefl
https://stackoverflow.com/questions/60098365
复制相似问题