面试题 01.02. 判定是否互为字符重排
面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 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) }