搜索字符向量矢量更好的办法我有一个要求,我有载体的载体来搜索一个字符。我写了一个非常粗糙的方法。在矢量矢量中搜索元素的更好方法是什么?斯卡拉
这里是我的代码:
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