/**
* 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
* 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
* 如果这个过程 结果为1,那么这个数就是快乐数。
*
* 作者:力扣 (LeetCode)
* 链接:https://leetcode.cn/leetbook/read/hash-table/xh1k9i/
* 来源:力扣(LeetCode)
* 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
* @param n
* @return
*/
public boolean isHappy(int n) {
HashSet<Integer> hashSet = new HashSet<>();
int result=0;
while (true){
result = getPow(n);
if(result == 1){
return true;
}
if(hashSet.contains(result)){
return false;
}
hashSet.add(result);
n = result;
}
}
private static int getPow(int n){
// 对n 进行分成 各个位数相平方相加
String str = n+"";
char[] chars = str.toCharArray();
int sum = 0;
for (int i = 0; i < chars.length; i++) {
sum += Math.pow(Integer.parseInt(String.valueOf(chars[i])),2);
}
return sum;
}版权声明:本文为qq_28852755原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。