算法 - 哈希表01(Swift版本)

68 阅读1分钟

基础知识学习

题目1:242.有效的字母异位词

题目和讲解

熟悉回顾下swift 字符串的操作

// @lc code=start
class Solution {
    func isAnagram(_ s: String, _ t: String) -> Bool {
        var record = Array(repeating: 0, count: 26)
        let first = "a".unicodeScalars.first!.value
        for char in s.unicodeScalars {
            record[Int(char.value - first)] += 1
        }
        for char in t.unicodeScalars {
            record[Int(char.value - first)] -= 1
        }
        for value in record {
            if value != 0 {
                return false
            }   
        }
        return true
    }
}
// @lc code=end

题目2:349. 两个数组的交集

题目和讲解

// @lc code=start
class Solution {
    func intersection(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
        var res = Set<Int>()
        var record = Set<Int>()
        for num in nums1 {
            record.insert(num)
        }
        for num in nums2 {
            if record.contains(num) {
                res.insert(num)
            }
        }
        return Array(res)
    }
}
// @lc code=end

题目3:202. 快乐数

题目和讲解

自己想出来了, 真是快乐。

// @lc code=start
class Solution {
    func isHappy(_ n: Int) -> Bool {
        var noHappy = Set<Int>()
        var num = n
        while num != 1 {
            num = calculatePow(num)
            if noHappy.contains(num) {
                return false
            }
            noHappy.insert(num)
        }
        return true
    }

    func calculatePow(_ n: Int) -> Int {
        var sum = 0
        var num = n
        while num != 0 {
            sum += (num % 10) * (num % 10)
            num = num / 10
        }
        return sum
    }
}
// @lc code=end

题目4:1. 两数之和

题目和讲解

思路: 关于如何判断 map[target - nums[i]] 里面有值卡了一会, 直接判空就可。
差点写成 map[target - nums[i]] > 0 ,和OC有些混了。

// @lc code=start
class Solution {
    func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
        var map = [Int: Int]()
        for i in 0..<nums.count {
            if let index = map[target - nums[i]] {
                return [index, i]
            }
            map[nums[i]] = i
        }
        return []
    }
}
// @lc code=end