题目来源:
力扣https://leetcode.cn/problems/happy-number/
题目简介:
输入一个数,判断是不是快乐数,快乐数就是把每个位上的数字进行平方和,直到最后为1,就返回ture,如果一直循环就返回false
思路:
第一步就是进行数位分离,然后计算下一个数的对应值,,计算出来后,遍历哈希集合,如果存在这个数,那么就返回false,如果不存在这个数,那么就把它添加进哈希集合,直到最后返回值为1,就返回ture。
代码实现:
class Solution {
private int getNext(int n) {
int totalSum = 0;
while (n > 0) {
int d = n % 10;
n = n / 10;
totalSum += d * d;
}
return totalSum;
}
public bool IsHappy(int n) {
HashSet <int> seen = new HashSet<int>();
while (n != 1 && !seen.Contains(n)) {
seen.Add(n);
n = getNext(n);
}
return n == 1;
}
};