搜索字符向量矢量更好的辦法我有一個要求,我有載體的載體來搜索一個字符。我寫了一個非常粗糙的方法。在矢量矢量中搜索元素的更好方法是什麼?斯卡拉
這裏是我的代碼:
def search(xs: Vector[Vector[Char]], char: Char, rowIndex: Int): Pos = xs.headOption match {
case None => Pos(-1, -1)
case Some(row) => {
val tuple = searchHelper(row, char, 0)
if(tuple._1)
Pos(rowIndex, tuple._2)
else
search(xs.tail, char, rowIndex +1)
}
}
def searchHelper(xs: Vector[Char], char: Char, colIndex: Int): (Boolean, Int) = xs.headOption match {
case None => (false, colIndex)
case Some(col) =>
if(col == char)
(true, colIndex)
else
searchHelper(xs.tail, char, colIndex +1)
}
search(vector, c, 0)
這裏是輸入:
val input =
"""ooo-------
|oSoooo----
|ooooooooo-
|-ooooooooo
|-----ooToo
|------ooo-""".stripMargin
val vector =
Vector(input.split("\n").map(str => Vector(str: _*)): _*)
val c = 'S'
我認識了Coursera分配,所以我不打算給直行的答案,但是請注意,您正在尋找2個不同的索引值:行索引和列索引。 [標準庫](http://www.scala-lang.org/api/current/scala/collection/immutable/Vector.html)提供了一些從集合中提取索引的不同方法。使用其中的2個(如評論提示中提到的)findChar()挑戰可以用2行代碼解決。 – jwvh
謝謝,我只是需要提示。 – kromastorm