18天沒什麼特殊意義,可能啤酒吧。
今天的題目大意:給定一個正整數 n,不斷將數字的每一位平方後相加,最後如果結果會變成 1,則稱為「快樂數 (happy number)」,否則會陷入無限循環而不是快樂數。請判斷 n 是否為快樂數。
class Solution {
public boolean isHappy(int n) {
//定義方法 isHappy:輸入 n(正整數),輸出 boolean(是否快樂數)
HashSet<Integer> seen = new HashSet<>();
while (n != 1 && !seen.contains(n)) {
// 當 n 不等於 1 且沒重複出現過時,繼續迭代。
如果 n 變成 1 → 是快樂數。
如果 n 重複出現 → 無限循環,不是快樂數。
seen.add(n);
n = getNext(n);
}
return n == 1;
}
private int getNext(int n) {
int totalSum = 0;
while (n > 0) {
int d = n % 10;
n = n / 10;
totalSum += d * d;
}
return totalSum;
}
}