【问题标题】:Use recursive method to prints a string with every second character removed使用递归方法打印一个字符串,每删除一个字符
【发布时间】:2020-05-22 16:47:49
【问题描述】:

我想使用递归方法从字符串中删除每个第二个字符。

    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 还很陌生,所以如果答案很明显,我深表歉意。我假设我在这里忽略了一些非常基本的解决方案。

【问题讨论】:

  • 如果你的单词中包含偶数个字母会怎样?
  • @brso05 如果是偶数,有两种选择:跳过最后一个字母或包含它。如果你跳过它,那么我下面的实现仍然有效,如果你想保留它,只需将 str.length() &lt; 2 更改为 &lt;= 2

标签: java string recursion


【解决方案1】:

如果 String 的剩余长度

  public static String removeEverySecondChar(String str) {
    if(str.length() < 2) {
      return str;
    }
    return str.substring(0,1) + removeEverySecondChar(str.substring(2));
  }

输入:Wonderful

输出:Wnefl

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2020-02-28
    • 2017-11-23
    相关资源
    最近更新 更多