美文网首页
go语言编写一个函数,判断两个字符串是否是相互打乱的,也就是说它

go语言编写一个函数,判断两个字符串是否是相互打乱的,也就是说它

作者: why154285 | 来源:发表于2018-07-03 16:07 被阅读0次

go语言编写一个函数,判断两个字符串是否是相互打乱的,也就是说它们有着相同的字符,但是对应不同的顺序

下面实现方法用了两次遍历来完成这题时间复杂度最大为2n,避免两重for循环或者递归n平方的时间复杂度。第一次遍历是把相同的byte作为key,个数作为value存入到map中。第二次遍历取其中一个map的key和value和第二个map相同key的value值做比较。

func comma2(s1string, s2string)bool {

if len(s1) != len(s2) {

return false

  }

var s1Map,s2Mapmap[byte]int

  s1Map,s2Map =make(map[byte]int),make(map[byte]int)

for i :=0; i < len(s1); i++ {

if _,ok1 :=s1Map[s1[i]];ok1 {

s1Map[s1[i]] +=1

      }else {

s1Map[s1[i]] =1

      }

if _,ok2 :=s2Map[s2[i]];ok2 {

s2Map[s2[i]] +=1

      }else {

s2Map[s2[i]] =1

      }

}

for key, value :=range s1Map {

if  s2Map[key] != value {

return false

      }

}

return true

}

相关文章

网友评论

      本文标题:go语言编写一个函数,判断两个字符串是否是相互打乱的,也就是说它

      本文链接:https://www.haomeiwen.com/subject/nthjuftx.html