题目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