簡體   English   中英

從字符串中刪除連續的重復項

[英]removing consecutive duplicates from the string

給定字符串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;**

條件

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

始終為false ,因為ans.charAt(ans.length()-1)始終包含與s.charAt(0)相同的值,因為上s.charAt(0)語句為:

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

因此聲明

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

永遠不會執行。 而且即使執行了它,也會導致錯誤的輸出,因為您將s.charAt(0)兩次添加到輸出String

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM