版權(quán)聲明:本文為博主原創(chuàng)文章胚委,未經(jīng)博主允許不得轉(zhuǎn)載晨仑。
難度:容易
要求:
寫一個算法來判斷一個數(shù)是不是"快樂數(shù)"。
a
一個數(shù)是不是快樂是這么定義的:對于一個正整數(shù)烫罩,每一次將該數(shù)替換為他每個位置上的數(shù)字的平方和,然后重復(fù)這個過程直到這個數(shù)變?yōu)?洽故,或是無限循環(huán)但始終變不到1贝攒。如果可以變?yōu)?,那么這個數(shù)就是快樂數(shù)时甚。
樣例
19 就是一個快樂數(shù)隘弊。
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
思路:
/**
* @param n an integer
* @return true if this is a happy number or false
*/
public boolean isHappy(int n) {
// Write your code here
HashSet<Integer> set = new HashSet<Integer>();
while(n != 1){
if(!set.add(n)){
return false;
}
n = getNext(n);
}
return true;
}
private int getNext(int n){
int value = 0;
while(n != 0){
value += ((n % 10) * (n % 10));
n /= 10;
}
return value;
}