题解 | #奶牛快乐数#
奶牛快乐数
https://www.nowcoder.com/practice/d91cec70c7724a7dbcea02ed25bdeaee
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
public boolean isHappy (int n) {
// write code here
// 用hashSet进行重复循环判断
HashSet<Integer> set = new HashSet<>();
// sum表示每次生成的数字
int sum = 0;
int single;
while (true) {
// single表示每一个位数
single = n % 10;
// 新生成的数字
sum += single * single;
n = n / 10;
// 如果n==0 表示,新数字已经完成生成
if (n == 0) {
// n重新被赋值,将新数字赋值给n
n = sum;
// 如果sum==1表示已经找到快乐数
if (sum == 1) {
return true;
}
// 如果hashSet已经包含了sum表示已经出现重复的循环,直接返回false即可
if (set.contains(sum)) {
return false;
}
// 将每次生成的新数字加入到hashSet中,用来判断是否已经出现重复循环。
set.add(sum);
// sum重新赋值为0
sum = 0;
}
}
}
}
知识点:
1.哈希去重
2.数字取余和整除,如何取出个位,十位,等等
解题分析:
1.怎么对数字进行取出每一个位数上的数字,这个简单,取余+整除
2.怎么判断是否出现无限循环,也不难,用hashSet判断是否已经出现重复的数字
3.如果出现直接返回false,表示不可能是快乐数就可以了
编程语言:
Java
传音控股公司福利 333人发布

