题目描述:查看某个数字是否happy number,即所有
个、十、百、XXX
的平方加起来和最终是否能为1.
**思路:**本题主要是考察对某个数字取个位、十位、百位的技巧,就是不断对10求余数,然后n每次整除10,在LSD基数排序(要知道最高位数)中也需要用这个来置位比较
代码如下:
class Solution:
def isHappy(self, n):
"""
:type n: int
:rtype: bool
"""
visited = set()
s = [n]
while s:
num = s.pop()
c_sum = 0
while(num!=0):
digit = num % 10
c_sum += (digit ** 2)
num //= 10
if c_sum not in visited:
visited.add(c_sum)
s.append(c_sum)
if c_sum==1:
return True
return False