主要是用一个set验证所得数会不会循环 每出现一个新数 放入set 如果出现过就说明有循环 退出
public class Solution {
public boolean isHappy(int n) {
if(n<=0) return false;
long ln = n;
Set<Long> set = new HashSet<Long>();
while(ln!=0) {
if(set.contains(ln) ) return false; else set.add(ln);
ln = digitSquare(ln);
if(ln == 1) return true;
}
return false;
}
private long digitSquare(long ln) {
long sum = 0;
while(ln!=0) {
sum += Math.pow(ln%10, 2);
ln /= 10;
}
return sum;
}
}