package com.mxnet;
import java.util.HashSet;
public class Solution202 {
public static void main(String[] args) {
}
/**
* 編寫一個算法來判斷一個數 n 是不是快樂數。
*
* 「快樂數」?定義為:
* 對于一個正整數,每一次將該數替換為它每個位置上的數字的平方和。
* 然后重復這個過程直到這個數變為 1,也可能是 無限循環 但始終變不到 1。
* 如果這個過程 結果為?1,那么這個數就是快樂數。
* 如果 n 是 快樂數 就返回 true ;不是,則返回 false 。
* @param n
* @return
* 思路:
* 1. 使用hash結構判斷在生成下一個數的時候是否出現循環
* 2. 首先使用一個函數計算改數的每個位置的平方和
* 3. 在循環生成下一個數的時候判斷是否出現循環
* 4. 若出現 則停止,并判斷是否滿足快樂數定義
* 5. 若未出現,則一直循環生成生成
* 6. 循環結束時判斷是否滿足條件
*/
public boolean isHappy(int n) {
HashSet<Integer> integers = new HashSet<>();
while (n != 1 && !integers.contains(n)){
integers.add(n);
n = getNext(n);
}
return n == 1;
}
/**
* 給定一個數字n 計算對各位數求平方和的值
* @param n
* @return
*/
public int getNext(int n){
int total = 0;
while (n > 0){
int d = n % 10;
total += d * d;
n = n / 10;
}
return total;
}
}
本文摘自 :https://www.cnblogs.com/