思路:用一个set记录是否重复出现过某值,是 则是无限循环,不可能还有1的情况,直接返回false; 否则一直处理生产新的数,直到为1;
class Solution {public boolean isHappy(int n) {//set记录是否重复出现过某值,是 则是无限循环,直接返回false;HashSet<Integer> set = new HashSet();while(!set.contains(n)) {set.add(n);//每次新的数加到set去n = prcessNewSum(n);//新数如果造出来是1,则返回是快乐数if(n==1){return true;}}return false;}//处理新数的函数private int prcessNewSum(int n) {int newSum = 0; //待返回的新数while(n>0) {int yush = n%10; //每轮的余数newSum += yush * yush; n = n/10;}return newSum; }}