LeetCode-202. 快乐数(Swift)
2019-07-11 本文已影响0人
entre_los_dos
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/happy-number
题目
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
方法1-计算各个数的平方和
func isHappy(_ n: Int) -> Bool {
var sumDic = [Int:Int]()
var sum = 0
var n = n
while sum != 1 {
sum = self.getSum(n)
if sumDic.keys.contains(sum) {
return false
}
sumDic[sum] = n
n = sum
}
return (sum==1 ? true : false)
}
func getSum(_ n: Int) -> Int {
var n = n
var sum = 0
//计算各位的平方和
while n > 0 {
sum = sum + (n%10) * (n%10)
n = n/10
}
return sum
}
定义一个字典,key放已出现过的平方和。
计算各个数的平方和,如果字典里面已存在,返回false。