public class Solution {
public int divedeAndProduct(int n){
int res = 0;
while(n != 0){
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
//System.out.println(res);
return res;
}
public boolean isHappy(int n) {
int temp = divedeAndProduct(n);
HashSet<Integer> set = new HashSet<Integer>();//用来判断是否出现循环
set.add(temp);
while(temp != 1){
//if(temp == initN) return false;//出现循环就不可能是开心数,这样防止死循环
temp = divedeAndProduct(temp);
//if(temp == initN) return false;//这一句不能放在上面注释的地方,因为一开始temp是等于intN的
//但这也不行,因为循环的数可能不是一开始出现的,所以用一个判断来陆续存入
if(set.contains(temp)){
return false;
}
else{
set.add(temp);
}
}
return true;
}
}leetcode [Happy Number]//待整理多种解法
最新推荐文章于 2021-09-12 12:51:45 发布
本文介绍了一个用于判断快乐数的算法实现。快乐数是指一个整数,通过不断替换它每个位上的数字的平方和,最终得到1的数。该算法通过循环检查每个数的平方和是否会出现重复或达到1,从而确定其是否为快乐数。
711

被折叠的 条评论
为什么被折叠?



