2016-09-16 5 views
-1

でdeleteCharAtを使用して私は、文字列内の重複文字を削除したいが、エラーが示唆したようにi = str.length - 1z = str.lengthであるときには、私の例外例外インデックスdeleteCharAtメソッドを使用してとの境界の外にStringBuilder

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;} 

答えて

2

を与えていますインデックス外そしてあなたのコードには別の問題があります。それは、ループしている間に文字列から文字を取り除くことです。文字を削除するたびに文字列の長さが変わるので、それを追跡する必要があるので、通常は実行するのは良い方法ではありません。別のより直感的な方法は、新しい文字列を作成し、新しい文字列に現れていない文字だけを追加することです。

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 
関連する問題