今早很尴尬,明明已经 12 点这么早睡觉了,结果早上 10 点才起床,只能说可能是最近这段时间熬夜确实比较重,身体见到有机会就趁机调养一下,这也是我早睡的目的啦
func closeStrings(word1 string, word2 string) bool {
c1, c2 := make([]int, 26), make([]int, 26)
for _, v := range word1 {
c1[v-'a']++
}
for _, v := range word2 {
c2[v-'a']++
}
sort.Ints(c1)
sort.Ints(c2)
for i := 0; i < 26; i++ {
if c1[i] != c2[i] {
return false
}
}
return true
}
上面代码是错的,我一开始理解错题目的意思了,我以为只要字母之间是可以任意替换的,其实不是,两个品种的字母之间想要替换需要保证他们的数量是相同的才行,举个例子:
func closeStrings(word1 string, word2 string) bool {
if len(word1) != len(word2) {
return false
}
var c1, c2 [26]int
for _, v := range word1 {
c1[v-'a']++
}
for _, v := range word2 {
c2[v-'a']++
}
for i := 0; i < 26; i++ {
if c1[i] == 0 && c2[i] == 0 { // 如果都不存在这个数字,就继续遍历
continue
}
if c1[i] == 0 || c2[i] == 0 { // 一个存在一个不存在,返回 false
return false
}
}
slices.Sort(c1[:])
slices.Sort(c2[:])
return slices.Equal(c1[:], c2[:])
}
这道题目说难不难,说简单也不简单,如标题,脑筋急转弯,你只需要想清楚两个点,这道题就非常容易了:
所以这道题肯定是可以用位运算来做的,不过我比较懒,就不实现了
原文地址:https://blog.csdn.net/Locky136/article/details/134707484
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_41062.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!