トピックへのリンク:https://leetcode-cn.com/problems/happy-number/
タイトル説明
番号がないかどうかを判断するためのアルゴリズムを書く「彼の喜びを数えます。」
各位置で、その桁の二乗数を交換正の整数の場合、各時間と数が1になるまで、プロセスを繰り返し、それが可変であってもよいが、無限ループを有する:「幸せな数」として定義されます1未満。あなたが一つになることができた場合は、この番号は幸せ数です。
例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
考え
次の組み合わせは、その後、無限ループに、既にテーブルに存在する場合、デジタルメモリハッシュテーブルは、登場しています。
コード
class Solution {
public:
bool isHappy(int n) {
unordered_set<int> s; // 记录已经出现的组合
n = digitSquareSum(n);
while (n!=1){
if(s.find(n) != s.end()) // 出现循环
return false;
s.insert(n);
n = digitSquareSum(n);
}
return true;
}
private:
int digitSquareSum(int n){
int ret = 0;
while (n>0){
ret += (n % 10) * (n % 10);
n /= 10;
}
return ret;
}
};