- 个人博客:https://javaniuniu.com/
- 难度:
简单
- 本题涉及算法:
算数
- 思路:
算数
- 类似题型:
题目 202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
如果 n 是快乐数就返回 True
;不是,则返回 False
。
示例:
输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
解题思路
- 根据题意 ,可得出伪代码
def getNum(n):
while n!=0:
a = n%10
n //= 10
- 根据题目发现判断条件
- 当 sumNum = 1 返回True
- 当 sumNum = 7 返回True 需要多 n = 1111111 单独判断
- 当 1 < sumNum < 10 即 循环后 n = 2 和 3 的会出现 无限循环的情况
- 当 sumNum > 10 ,则 赋值 n = sumNum 继续循环
代码
class Solution:
def isHappy(self, n: int) -> bool:
sumNum = 0;
while n!=0:
sumNum += (n%10)*(n%10)
n //= 10
if n == 0:
if sumNum == 1 or sumNum==7:
return True
if sumNum<10:
return False
else :
n = sumNum
sumNum = 0