编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
对于一个,一共会出现三种情况:
最终得到1,是快乐数;
进入一个循环,但得不到1,不是一个快乐数;
会越来越大,接近无穷大。
- class Solution {
- public boolean isHappy(int n) {
- Set
set = new HashSet<>(); - while(n != 1 && !set.contains(n)){
- set.add(n);
- n = getPower(n);
- }
- return n==1;
- }
- public int getPower(int n){
- int res = 0;
- while(n > 0){
- int tem = n % 10;
- res += tem * tem;
- n = n / 10;
- }
- return res;
- }
- }