Tips:
第一次没有AC是因为没有判断1这个特殊的数,其他没有什么太难的地方,代码和注释如下:
public class Solution202 {
public boolean isHappy(int n) {
int nn = n,temp = 0;
Set<Integer> set = new HashSet<Integer>();<span style="white-space:pre"> </span>//用set检测是否回到了起点
set.add(n);<span style="white-space:pre"> </span>//将n加入
if(n == 1)<span style="white-space:pre"> </span>//1需要先判断
return true;
while(temp!=1) {
temp = 0;
while (nn != 0) {<span style="white-space:pre"> </span>//各位的平方和
temp += Math.pow(nn % 10, 2);
nn = nn / 10;
}
if(set.contains(temp))<span style="white-space:pre"> </span>
return false;
set.add(temp);
nn = temp;
}
return true;<span style="white-space:pre"> </span>//若循环结束则是Happy Number
}
}