scala:optimize方法:字符串比较

时间:2016-03-09 20:54:48

标签: scala

这是一段代码。我的问题很简单。 在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
    }

1 个答案:

答案 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