【问题标题】:removing consecutive duplicates from the string从字符串中删除连续的重复项
【发布时间】:2018-08-05 00:17:54
【问题描述】:

给定一个字符串 S,递归地从中删除连续的重复项。

public class Solution {

    public static String removeConsecutiveDuplicates(String s) {
        // Write your code here

      if(s.length() <= 1)
      {
        return s;
      }
      String ans = "" + s.charAt(0);

      if(ans.charAt(ans.length()-1)!=s.charAt(0))
      {
        ans= ans + s.charAt(0) + removeConsecutiveDuplicates(s.substring(1));
      }
      //ans = ans + s.charAt(0)+
      removeConsecutiveDuplicates(s.substring(1));
      return ans;
    }
}

为什么这段代码是错误的? 虽然我也用不同的方法做到了这一点,但我想知道为什么上述方法会失败。

    **String ans="";
          if(s.charAt(0)==s.charAt(1))
          {
           ans = removeConsecutiveDuplicates(s.substring(1)); 
          }
          else
            ans = ans + s.charAt(0) + removeConsecutiveDuplicates(s.substring(1));
        return ans;**

【问题讨论】:

    标签: java string duplicates


    【解决方案1】:

    条件

    if(ans.charAt(ans.length()-1)!=s.charAt(0))
    

    总是false,因为ans.charAt(ans.length()-1) 总是包含与s.charAt(0) 相同的值,因为前面的语句是:

    String ans=""+s.charAt(0);
    

    因此声明

    ans= ans + s.charAt(0)+removeConsecutiveDuplicates(s.substring(1));
    

    永远不会被执行。即使它被执行,也会导致错误的输出,因为你会在输出String 中添加两次s.charAt(0)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2019-11-29
      • 2017-04-03
      • 2019-09-02
      相关资源
      最近更新 更多