面试题 01.02. 判定是否互为字符重排
面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入:s1= "abc",s2= "bca" 输出: true
示例 2:
输入:s1= "abc",s2= "bad" 输出: false
说明:
0 <= len(s1) <= 1000 <= 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)
}
浙公网安备 33010602011771号