java - 删除 String(java) 中相邻的重复字符,即输入 :aaaabbbccdbbaae output: abcdbae

标签 java string

我的代码没有给出预期的输出,但空运行工作正常。请看看问题出在哪里

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/

相关文章:

java - XML 反序列化导致 JsonMappingException : Can not deserialize instance of class out of VALUE_STRING token

c# - 从字符串中删除所有空格的有效方法?

java - 找到2个字符串的最长公共(public)子序列?

java - R 中缺少 Java 命名空间

python - 使用 regex 基于括号后的大写字符删除首字母缩略词

c 如果字符串为空则退出

javascript - 输入字段在 Controller 端以不同的方式保存(angularjs)

java - 为什么 Oraoop 1.6 在分配内存块之前要等待 1.5 分钟?

java - 以通用方式处理 JSON 响应

java - 发送文件的客户端/服务器卡在某处