链接地址:快乐数
解题思路即要点:为什么会想到使用Set集合?有题目可知,若出现循环则不是快乐数,那么当我们使用一个集合去存储他的时候里面的元素不重复则说明是快乐数,不重复是Set集合的一个重要的特点。
因此想到使用Set集合。
题目的关键是要分析要有几趟循环以及每一趟循环需要如何处理,几趟循环是由容器中出现重复元素则终止,否则一直循环,每一趟循环则是(n>0)对n不断取10的取余操作,将其每位数的平方累加。分析完完毕后,将两循环嵌套号即可以得到如下代码。
class Solution {
public boolean isHappy(int n) {
Set <Integer>set=new HashSet<Integer>();
int temp =getnum(n);
while(temp!=1){
if(set.contains(temp)){
return false;
}
else{
set.add(temp);
temp = getnum(temp);
}
}
return true;
}
public int getnum(int a){
int sum =0;
while(a>0){
int temp = a%10;
sum += temp*temp;
a = a/10;
}
return sum;
}
}