由题意知,Happy Number指的是将该数的各个位上的数字平方求和,如此循环往复,若最终所得数字为1,则为Happy Number。否则不是Happy Number。
为防止陷入重复循环之中,需要有个避免重复循环的终止条件。实现起来就是用哈希表,一旦遇到非1的重复数字就立刻跳出循环终止。
C++实现
class Solution {
public:
bool isHappy(int n) {
unordered_map<int,int>m;
while(n!=1){
int sum = 0;
while(n>0){
sum += (n%10)*(n%10);
n /= 10;
}
n = sum;
if(m.find(n)!=m.end()){
break;
}
else{
m[n]=1;
}
}
return n==1;
}
};