242.有效的字母异位词
思路1:
// 基本思路就是每个字符串都遍历一次
第一个字符串存着次数,第二个字符串就减减,如果数组中的次数少于等于0,那么说明不是。
// 思路2:排序后在比较是否相等
func isAnagram(s string, t string) bool {
// 基本思路就是每个字符串都遍历一次
// 第一个字符串存着次数,第二个字符串就减减
if len(s) != len(t) {
return false
}
arr := make([]int, 26)
for _, c := range s {
fmt.Println(c)
arr[c - 'a']++
}
for _, c := range t {
if arr[c - 'a'] <= 0 {
return false
}
arr[c - 'a']--
}
return true
}
349. 两个数组的交集
这个用哈希表存
func intersection(nums1 []int, nums2 []int) []int {
// 这个肯定使用哈希表了
table := make(map[int]int)
result := make([]int, 0)
for _, x := range nums1 {
table[x]++
}
for _, x := range nums2 {
if _, ok := table[x]; ok {
delete(table, x) // 删除防止下一次验证
result = append(result, x)
}
}
return result
}
202. 快乐数
就按说的,每一次都判断所有位的平方和是否为1
另外一个优点就是:如果之前出现过这个数,那么直接false
func isHappy(n int) bool {
// 就按说的,每一次都判断所有位的平方和是否为1
// 另外一个优点就是:如果之前出现过这个数,那么直接false
// var num int
tabel := make(map[int]int)
for n != 1 {
newNum := getSum(n)
// 如果存在这个数,说明死循环了。
if _, ok := tabel[newNum]; ok {
return false
}
tabel[newNum] = 1
n = newNum
}
return true
}
func getSum(num int) (res int) {
for num != 0 {
res += (num % 10) * (num % 10)
num = num / 10
}
return
}
1. 两数之和