我正在编写一种使用 StringBuffer 从字符串中删除重复项的方法。该方法返回 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() );
}
最佳答案
for (int k = len - 1 ; k > j ; k++ )
如果您尝试向下迭代,则需要是 k--
,而不是 k++
。现在,第二次迭代将具有 k = len
,这是超出范围的。您正在无限向上更新,而不是向下更新。
你还缺少一个括号:它需要
if ( sb.charAt(k) == c ) {
sb.deleteCharAt(k);
len--;
}
(当我们这样做时,基本上没有理由使用 StringBuffer
而不是 StringBuilder
,它提供〜相同的 API,而无需同步开销。)
关于java - 使用StringBuffer删除重复项的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794881/