1.题目
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
2.代码
class Solution {
    public boolean isHappy(int n) {
        //定义一个哈希表,储存不断更新的n
        Set<Integer> set = new HashSet<>();
        //当n不等于1和这个数不在集合里面的时候就进入循环
        while(n!=1 && !set.contains(n)){//注意不在集合里的写法
            set.add(n);//把这个数添加到集合里
            n = getNextNumber(n);//然后调用方法改变n的值,不断更新n再不断判断循环里的条件
        }
        return n==1;//这个很好,就是可以返回true也可以是false
    }
    //此方法用来不断更新n的值
    //就是计算一个数的每个位数的平方和
    public int getNextNumber(int n){
        int sum=0;
        while(n>0){//注意条件
            int temp = n%10;//取模,如19就得到9
            sum+=temp*temp;//直接求9的平方
            n=n/10;//然后再去掉最后一位数,此时还会判断是否大于0,是的话就继续进入循环,继续累加
        }
        return sum;
    }
}









