import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean isHappy (int n) {
// write code here
HashSet<Integer> visited = new
HashSet<>(); // 用于记录已经出现过的结果
while (n != 1 && !visited.contains(n)) {
visited.add(n); // 将当前结果加入哈希表
n = getNextNumber(n); // 获取下一个结果
}
return n == 1;
}
public int getNextNumber(int n) {
int sum = 0;
while (n > 0) {
int digit = n % 10;
sum += digit * digit;
n /= 10;
}
return sum;
}
}
编程语言是Java。
该题考察的知识点是哈希表的使用和循环计算。
代码的简短文字解释如下:
在给定的整数n下,判断是否为快乐数。快乐数是指对于一个正整数,如果将其每个数字的平方和作为新的数字,重复这个过程,最终结果等于1,则该数字是快乐数。
首先创建HashSet集合visited,用于记录已经出现过的结果。
在isHappy方法中,通过循环来判断是否为快乐数。当n不等于1且visited集合中不存在当前数字时,执行以下操作:
- 将当前数字加入到
visited集合中。 - 调用
getNextNumber方法获取下一个结果,更新n的值。
通过判断n是否等于1来确定是否为快乐数。
在getNextNumber方法中,根据输入的数字n,通过循环计算每个数字的平方和。每次取末尾数字的平方并累加到sum变量中,然后将n除以10进行下一轮迭代。返回最终的平方和作为下一个结果。

京公网安备 11010502036488号