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

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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,195评论 0 13
  • “静海 孤城 岁月 漫歌 东飘西泊离宣武 南来北往别崇文” 坐在图书馆一隅,耳机里恰好又播到蔡照的这首《孤》...
    八月候鸟阅读 285评论 3 4
  • 魔愚阅读 113评论 0 0
  • 同学结婚,回家喝酒,今天早上看到爸爸妈妈一大早起床出门干活,心情复杂,不忍、愧疚,一直以来,他们总是为我操心,希望...
    pi88dian88阅读 254评论 0 1
  • 夏池何伴茶 最恰 蝉与蛙 曦暮共荷柳 莫催 吾还家 2017·7·16
    文字苏梦阅读 202评论 0 0