美文网首页
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