202. 快樂數(shù)
編寫一個算法來判斷一個數(shù)是不是“快樂數(shù)”碎连。
一個“快樂數(shù)”定義為:對于一個正整數(shù),每一次將該數(shù)替換為它每個位置上的數(shù)字的平方和阿迈,然后重復這個過程直到這個數(shù)變?yōu)?1,也可能是無限循環(huán)但始終變不到 1。如果可以變?yōu)?1为居,那么這個數(shù)就是快樂數(shù)。
示例:
輸入: 19
輸出: true
解釋:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
- 首先定義一個Set集合杀狡,用來存放計算后的平方和m颜骤,如果m在Set中已存在,即進入了死循環(huán)捣卤,則退出;
- 如果m不存在Set八孝,則將m放入Set董朝;
- 直至找到平方和為1或者set集合中存在該平方和(進入死循環(huán))就退出。
求平方直接使用Math.pow(a,3)即可干跛,即等于求a的3次方子姜。Math方法直接是在Java.lang 包下的。
class Solution {
public boolean isHappy(int n) {
Set<Integer> set = new HashSet<Integer>();
int m = 0;
while (true) {
while (n != 0) {
m += Math.pow(n%10, 2); //n % 10 的目的是為了將每一位分離出來
n /= 10; //10是為了把最后一位的索引左移
}
if (m == 1) {
return true;
}
if (set.contains(m)) {
return false;
} else {
set.add(m);
n = m;
m = 0;
}
}
}
}