image.png
image.png

解题思路

Set

首先定义一个Set集合,用来存放计算后的平方和m,如果m在Set中已存在,即进入了死循环,则退出;
如果m不存在Set,则将m放入Set;
直至找到平方和为1或者进入死循环就退出。
/

  1. class Solution {
  2. public boolean isHappy(int n) {
  3. Set<Integer> set = new HashSet<>();
  4. int m = 0;
  5. while(true){
  6. while(n != 0){
  7. m += Math.pow(n%10, 2);
  8. n /= 10;
  9. }
  10. if(m == 1){
  11. return true;
  12. }
  13. if(set.contains(m)){
  14. return false;
  15. }else{
  16. set.add(m);
  17. n = m;
  18. m = 0;
  19. }
  20. }
  21. }
  22. }