我的代码没有给出预期的输出,但空运行工作正常。请看看问题出在哪里
public static StringBuffer singleOccurence(String s)
{
StringBuffer sb = new StringBuffer(s);
int length=s.length();
for(int i=0; i< length ; i++)
{
for(int j=i; i<length&&j<length ; j++)
{
if(sb.charAt(i)!=sb.charAt(j+1))
i=j+1;
else
sb.deleteCharAt(j+1);
}
}
return sb;
}
还给出 StringIndexOutOfBounds
最佳答案
您的方法做了很多不必要的工作。
这个问题可以通过遍历字符串一次并将每个字符与它前面的字符进行比较来解决:
public static StringBuilder singleOccurence(String s)
{
StringBuilder sb = new StringBuilder();
if (s.length() > 0) {
char prev = s.charAt(0);
sb.append(prev);
for (int i = 1; i < s.length(); ++i) {
char cur = s.charAt(i);
if (cur != prev) {
sb.append(cur);
prev = cur;
}
}
}
return sb;
}
该方法具有线性时间复杂度。
关于java - 删除 String(java) 中相邻的重复字符,即输入 :aaaabbbccdbbaae output: abcdbae,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635585/