面试题 01.02. 判定是否互为字符重排

面试题 01.02. 判定是否互为字符重排

给定两个字符串 s1s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = "abc", s2 = "bca"
输出: true 

示例 2:

输入: s1 = "abc", s2 = "bad"
输出: false

说明:

  • 0 <= len(s1) <= 100
  • 0 <= len(s2) <= 100

方法一:用哈希表(map)

func CheckPermutation(s1 string, s2 string) bool {
    var c1, c2 [26]int
    for _, ch := range s1 {
        c1[ch-'a']++
    }
    for _, ch := range s2 {
        c2[ch-'a']++
    }
    return c1 == c2
}

方法二:排序后比较

func CheckPermutation(s1 string, s2 string) bool {
    b1, b2 := []byte(s1), []byte(s2)
    sort.Slice(b1, func(i, j int) bool { return b1[i] < b1[j] })
    sort.Slice(b2, func(i, j int) bool { return b2[i] < b2[j] })
    return string(b1) == string(b2)
}

posted on 2022-09-27 10:51  HHHuskie  阅读(16)  评论(0编辑  收藏  举报

导航