给定字符串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;**
答案 0 :(得分:0)
条件
type detectionParams = {timeStamp: number, rectangle:number[]};
private detection: detectionParams[];
始终为 false ,因为if(ans.charAt(ans.length()-1)!=s.charAt(0))
始终包含与ans.charAt(ans.length()-1)
相同的值,因为前一个语句是:
s.charAt(0)
因此声明
String ans=""+s.charAt(0);
永远不会执行。即使它已被执行,也会导致输出错误,因为您会在输出ans= ans + s.charAt(0)+removeConsecutiveDuplicates(s.substring(1));
中添加s.charAt(0)
两次。