利用 unordered_set 判断平方和后的结果是否曾经出现过,若出现过说明陷入无限循环,返回 False
class Solution {
public:
// sum 函数计算平方和
int sum(int n) {
int result = 0;
while (n != 0)
{
int a = n % 10;
result += a * a;
n /= 10;
}
return result;
}
bool isHappy(int n) {
unordered_set<int>unset;
int result = sum(n);
while (result != 1)
{
//若 unset 中没有该数,则将该数插入 unset
if (unset.find(result) == unset.end()) {
unset.insert(result);
result = sum(result);
}
//若 unset 中有该数,说明陷入无限循环,返回 False
else return false;
}
return true;
}
};
初学者,见解不足,如有错误请指出