202. 快乐数
思路
将每次循环计算得到的数加入哈希表(set) set1 中,加入前判断这个数是否已存在于 set1 中,
若存在,说明出现了循环,不是快乐数,返回 false;
若不存在,将计算得到的数加入哈希表(set) set1 中。
当计算得到的数等于1时,说明是快乐数,退出 while 循环,返回 true。
import java.util.Set;
import java.util.HashSet;class Solution {public boolean isHappy(int n) {// 将每次计算得到的数加入到 set1 中Set<Integer> set1 = new HashSet<>();while (n != 1) { // 若 n = 1,说明原始的数是快乐数if (set1.contains(n)) { // 若 n 已存在 set1 中,出现循环,返回 falsereturn false;} else {set1.add(n);n = getSum(n);}}return true;}// 返回整数 n 各位数字的平方和public int getSum(int n) {int sum = 0;while (n != 0) {sum += Math.pow(n % 10, 2);n /= 10;}return sum;}
}