读懂题意,除了分拆还有一个比较重要的点就是要知道什么时候能够退出false.也就是说在某种情况下会形成一个不满足true条件的循环,那么就说明是失败了,临界条件是什么?就是出现了已经出现过的数
public boolean isHappy(int n) {
if(n==1){
return true;
}
HashSet<Integer> set=new HashSet<>();
while(n!=1&&!set.contain(n)){
set.add(n);
int num=0;
while(n!=0){
int a=n%10;
int b=a*a;
num+=b;
n=n/10;
}
n=num;
if(n==1){
return true;
}
}
return false;
}