链接
题意
快乐数字。
定义:给定一个正整数,求其每一位的平方和。对平方和重复这个过程,直到结果为1。若永远达不到1则不是快乐数字。
思路
由于判定为非快乐数字时,我们不能让程序陷入死循环,这样永远也无法得到结果。因此可以用一个Set记录已经出现过的数,当新的平方和存在于Set中时,则知平方和已进入循环,则可返回false。当然如果出现1的话直接返回true。
代码
public class Solution {
public boolean isHappy(int n) {
Set<Integer> inLoop = new HashSet<Integer>();
int squareSum,remain;
while (inLoop.add(n)) {
squareSum = 0;
while (n > 0) {
remain = n%10;
squareSum += remain*remain;
n /= 10;
}
if (squareSum == 1)
return true;
else
n = squareSum;
}
return false;
}
}