![](/img/trans.png)
[英]Removing consecutive duplicates from a string recursively is failing selective test cases
[英]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.