解法:可能会陷入循环,这时候要考虑到使用集合,将所有出现过的数放进集合,如果集合包含这个数,就证明重复了。
private int getNext(int n) {
int sum = 0;
while(n>0) {
int d = n%10;
n = n/10;
sum += d*d;
}
return sum;
}
public boolean isHappy(int n){
Set<Integer> set = new HashSet<>();
while (n!=1 && !set.contains(n)) {
set.add(n);
n = getNext(n);
}
return n==1;
}