使用StringBuffer删除重复的方法

时间:2015-08-03 19:04:58

标签: java string stringbuffer

我正在编写一种使用StringBuffer从String中删除重复的方法。该方法返回StringIndexOutOfBoundsException。我该如何解决?

public static void removeDups( String myString ){

        StringBuffer sb = new StringBuffer( myString );
        int len =  myString.length(); 

        for ( int j = 0; j < len; j++ ){

            char c = sb.charAt(j);

            for ( int k = len - 1 ; k > j ; k-- ){

                if ( sb.charAt(k) == c ){

                    sb.deleteCharAt(k);
                    len--; 
                }

            }
        }

        System.out.println("After deleting the dups : " + sb.toString() ); 
    } 

1 个答案:

答案 0 :(得分:3)

for (int k = len - 1 ; k > j ; k++ )

如果您尝试向下迭代,则需要k--,而不是k++。现在,第二次迭代将会有k = len,并且它已经超出界限。您无限制地向上更新而不是向下更新。

您还错过了一个括号:它必须是

 if ( sb.charAt(k) == c ) {
    sb.deleteCharAt(k);
    len--; 
 }

(虽然我们正在使用它,但基本上没有理由使用StringBuffer代替StringBuilder,它提供了相同的API而没有同步开销。)