【问题标题】:Reverse String at a specific Index using Recursion使用递归在特定索引处反转字符串
【发布时间】:2020-11-01 17:56:53
【问题描述】:

我将如何让它在特定索引处反转字符串,例如,再见 i=1 将是 ybdoog 而 i=2 是 bdoog。在返回的字符串中,该索引之前的任何内容都会被忽略。在Java中

public static String revStr(String s, int i) {
    if (s == null || s.length() <= 1)
        return s;
    else
        return revStr(s.substring(1), i)+ s.charAt(0);
}

【问题讨论】:

  • for example, goodbye at i=1 would be ybdoog。 - e去哪儿了?
  • 它应该是 revStr,并且 e 消失了,因为在这种情况下它应该反转从特定索引开始的字符串 1 所以它在反转时跳过 e。
  • 跳过 e 我的意思是在特定索引 i 处开始反转。
  • 该方法从指定的索引开始,以相反的顺序返回传入的字符串。 i = 0 只会返回正常反转的字符串。
  • 所以结果需要有前缀,不能取反。以及从索引i 开始的反转部分?喜欢revStr("abcdefgh", 3) --&gt; "abchgfed" ?

标签: java recursion reverse


【解决方案1】:

您需要返回s.substring(i) 而不是s,因为您想要从i 开始的反向子字符串。另外,为此,终止条件应为if (s == null || s.length() &lt;= i)

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(revStr("goodbye", 2));
        System.out.println(revStr("goodbye", 1));
        System.out.println(revStr("goodbye", 0));
    }

    public static String revStr(String s, int i) {
        if (s.length() <= i)
            return s.substring(i);
        else
            return revStr(s.substring(1), i) + s.charAt(0);
    }
}

输出:

bdoog
ybdoog
eybdoog

【讨论】:

  • 这只适用于 1 应该已经澄清它需要适用于任何 i,而不仅仅是 1 或 0,例如 2 = bdoog。
  • @LethalLizard - 纠正了这个问题。如果有任何进一步的疑问/问题,请随时发表评论。
  • @ShashSinha - 你是对的。感谢您指出。我已经更新了答案。
猜你喜欢
  • 2014-03-30
  • 2017-07-20
  • 2011-07-28
  • 2015-09-27
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多