面试题:给定a、b字符串,判断b是否为a的变位词(scala版本)

来源:互联网 发布:女生学数据库管理员 编辑:程序博客网 时间:2024/05/16 01:43
case class compareStr(val str: String) {//假设对比的数组都是小写字母,下面的方法将字符串中的每个字符转换成哈希数字,用map生成数组def fill(str: String): IndexedSeq[Int] = {val k = str.map(_.hashCode)k}//这个方法可以把thisStr跟n都省掉,但是可读性会变很差//使用diff函数对比,如果返回为空,则表示匹配def belongTo(str: String): Boolean =  {val n = this.str.lengthval thisStr = fill(this.str)val thatStr = fill(str)val result = (0 to str.length-n).map{ x =>val thatStrSlice =thatStr.slice(x, x+n)thisStr.diff(thatStrSlice).isEmpty}result.contains(true)}}object compareStr {//隐式转换implicit def strs(str: String): compareStr = compareStr(str)                                                  //> strs: (str: String)compareStrval str1 = "eol"                          //> str1  : String = eolval str2 = "lel"                          //> str2  : String = lelval str3 = "hello"                        //> str3  : String = hellostr1.belongTo(str3)                       //> res0: Boolean = falsestr2.belongTo(str3)                       //> res1: Boolean = true}


 

0 0
原创粉丝点击