一、题目描述
二、解题思路
在计算的过程中,只要当前得到的数字在之前出现过,就说明一定不快乐,直接返回false
就好了
这里可以用一个set
来记录之前的数字是否出现过
set.find(x)
:找到了返回迭代器位置,否则返回set.end()
三、解题代码
class Solution {
public:
bool isHappy(int n) {
set<int> s;
while(n != 1){
int tmp = 0;
while(n){
tmp += pow((n % 10), 2);
n /= 10;
}
if(s.find(tmp) != s.end()) return false;
else s.insert(tmp);
n = tmp;
}
return true;
}
};