如何比较这两个字符串:
val a = "fit bit versa"
val b = "fitbit"
另一个例子
val a = "go pro hero 6"
val b = "gopro"
另一个例子
val a = "hero go pro 6"
val b = "gopro"
另一个例子
val a = "hero 6 go pro"
val b = "gopro"
我想在上面的比较中得到“true”,但不是在这里:
val a = "vegan protein powder"
val b = "vega"
这应该是假的。
目前我正在做:
def matchPattern(a:String, b: String):String=
{
val dd = a.split(" ")
val result = dd.map(_.toLowerCase())
if(result contains b.toLowerCase) true
else false
}
这适用于最后一种情况,但不适用于其余情况。
有什么建议吗?
这是一种使用的方法sliding(i)
, where i
范围从 2 到字数a
,组装所有可能连接的相邻单词的列表。然后检查是否b
与列表中的任何元素完全匹配,如下所示:
def matchPattern(a: String, b: String): Boolean = {
val words = a.toLowerCase.split("\\s+")
val concats = (2 to words.size).foldLeft(words)(
(acc, i) => acc ++ words.sliding(i).map(_.mkString)
)
concats contains b.toLowerCase
}
matchPattern("Hero go Pro 6", "gopro")
// res1: Boolean = true
matchPattern("Hero go Pro 6", "gopro6")
// res2: Boolean = true
matchPattern("Vegan protein powder", "vega")
// res3: Boolean = false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)