题目: https://leetcode.com/problems/happy-number/
思路:
用 HashSet 检查重复。另外有地方在讨论 <6是一定会进入循环,暂时没有证明
Code:
public boolean isHappy(int n) {
if(n==1) return true;
HashSet<Integer> hs = new HashSet<Integer>();
while(!hs.contains(n)){
if(n<6) return false; // 无证明
hs.add(n);
int temp=0;
while(n != 0){
temp += (int)Math.pow(n%10,2);
n /= 10;
}
n = temp;
if(n == 1) return true;
}
return false;
}
备注: