编程语言:java;
基本思路:本题可能会出现无限循环的情况,及每位数的平方的和永远不等于1,此时的平方和的值一定在之前已经出现过,所以判断一个元素是否曾经出现过就需要使用hash表来判断。此题中还有一点就是获取每一位数字用取模的方法进行计算;
class Solution {
public boolean isHappy(int n) {
Set<Integer> set = new HashSet<>();
while(n!=1 && !set.contains(n)){
int sum = 0;
set.add(n);
while(n > 0){
int num = n % 10;
sum += num * num;
n /= 10;
}
n = sum;
}
return 1 == n;
}
}