使用一个set来存储遇到的每个数,如果遇到的数在set中,那么说明这个数不是快乐数,否则一直循环下去,直到n = 1结束循环,表示这个数是个快乐数。
- 需要注意的是,给定一个数 n, 怎样对这个数 n 进行每一位求和。
代码如下:
cpp
class Solution {
public:
bool isHappy(int n) {
unordered_set<int> s;
while(n != 1){
if(s.find(n) != s.end()){
return false;
}
else {
s.insert(n);
}
n = getSum(n);
}
return true;
}
int getSum(int n){
int sum = 0;
while(n){
sum += (n % 10) * (n % 10);
n /= 10;
}
return sum;
}
};