哈希表都是用来快速判断一个元素是否出现集合里。
题目
https://leetcode-cn.com/problems/happy-number/
思路
- 对取数值各个位上的单数操作熟悉(先模10取余得到个位数。。。再除10整体数字右移)
- 判断这个n是否重复出现,如果重复了就是return false, 否则一直找到n为1为止。
- 想到用set的contains方法
- 先判断有没有n,再加到set里面,最后再得到n的下一个值
代码
class Solution {
public boolean isHappy(int n) {
Set<Integer> set = new HashSet<>();
while(n!=1 && !set.contains(n)){
set.add(n);
n = getNumber(n);
}
return n==1;
}
public int getNumber(int n){
int result = 0;
while(n>0){
int temp = n%10;
result+= temp*temp;
n = n/10;
}
return result;
}
}