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]//待整理多种解法
最新推荐文章于 2020-05-01 00:21:11 发布