这是一段代码。我的问题很简单。 在scala中有更复杂的方法吗?
如果字符串只有一个字符,则返回true。 即“猫”和“婴儿床”应该是真的
def Compare(s1: String, s2: String) : Boolean = {
val sArray : scala.collection.immutable.IndexedSeq[Char] = s1.map(_.toChar)
var matchNumber : Int = 0
var notFound : Int = 0
sArray.foreach( (c:Char) =>{
c match {
case x if s2.indexOf(x) >= 0 => matchNumber += 1
case _ => notFound += 1
}
});
matchNumber + notFound == s1.length && notFound > 0
}
答案 0 :(得分:2)
这是一个更短且更惯用的版本:
def compare(s1: String, s2: String) : Boolean = {
s1.length == s2.length && (s1.zip(s2).count { case (c1, c2) => c1 == c2 } >= s1.length -1)
}
例如:
println(compare("same", "same")) // true
println(compare("same", "sDme")) // true
println(compare("same", "sam")) // false
println(compare("same", "sDDe")) // false