LeetCode

链接

202. Happy Number

题意

快乐数字。
定义:给定一个正整数,求其每一位的平方和。对平方和重复这个过程,直到结果为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;
    }
}
原文地址:https://www.cnblogs.com/zyoung/p/7068344.html