這題是 202. Happy Number,我們需要判斷給定的數是否為「快樂數 (Happy Number)」。
題目:
一個「快樂數」是這樣定義的:對於一個正整數,重複將數字替換為它每個位置上的數字的平方和,並最終會得到 1。如果在此過程中進入一個迴圈而無法到達 1,則不是快樂數。
範例:
輸入: 19
輸出: true
解釋:
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
實作:
#include <unordered_set>
using namespace std;
class Solution {
public:
bool isHappy(int n) {
unordered_set<int> seen;
while (n != 1 && seen.find(n) == seen.end()) {
seen.insert(n);
n = getNext(n);
}
return n == 1;
}
private:
int getNext(int n) {
int sum = 0;
while (n > 0) {
int digit = n % 10;
sum += digit * digit;
n /= 10;
}
return sum;
}
};