我想使用deleteCharAt方法删除字符串中的重复字符,但它给了我一个例外
def removeDuplicate(str: String): String={
var sb = new StringBuilder(str);
for(i <-0 until str.length ){
for(z <- i+1 until str.length ){
if(str(i)==str(z)){
sb.deleteCharAt(i);
}
}
}
return sb.toString;}
答案 0 :(得分:2)
如错误所示,当i = str.length - 1
,z = str.length
超出索引时。你的代码还有另一个问题,就是你在循环遍历字符串时从字符串中删除字符。这通常不是一个好习惯,因为每次删除一个字符时字符串长度都会改变,你需要跟踪它。另一种更直观的方法是构建一个新字符串,并仅添加未出现在新字符串中的字符:
def removeDuplicate(str: String):String = {
var sb = ""
for(i <- 0 until str.length) {
if(! (sb contains str(i))) {
sb += str(i)
}}
sb
}
scala> removeDuplicate("abbccssds")
res13: String = abcsd
scala> removeDuplicate("abbeedsff")
res14: String = abedsf
scala> removeDuplicate("abbeedsffgg")
res15: String = abedsfg