原题链接在这里:https://leetcode.com/problems/happy-number/
思路就是用HashSet 存储过往的和,若是遇见了相同的和,则表示出现了无限循环,没有happy number。
Note: 1. Math.pow()的argument 和 return value 都是 double 型,返回时要注意cast。
2. ^ operator stands for XOR - exclusive OR, 不是指数相乘,今后要注意。
3. 遍历一个数字的每一位就用下面的代码:
while(n!=0){
int digit = n%10;
n = n/10;
}
AC Java:
public class Solution {
public boolean isHappy(int n) {
if(n<=0)
return false;
HashSet hs = new HashSet();
while(!hs.contains(n)){
if(n == 1)
return true;
hs.add(n);
int sum = 0;
while(n!=0){
sum+=(int)Math.pow(n%10,2); //Math.pow will return a double variable, So we need to cast it.
n = n/10;
}
n = sum;
}
return false;
}
}