202. 쾌락 수난이도 단순HashSet

202. 즐거움 수
난이도 가 간단 하 다 
하나의 알고리즘 을 만들어 서 하나의 수 를 판단 하 다.  n  즐 거 운 숫자 아니 야?
'즐거움 수' 는 하나의 정수 에 대해 매번 이 수 를 모든 위치 에 있 는 숫자의 제곱 으로 바 꾼 다음 에 이 과정 을 이 수가 1 로 변 할 때 까지 반복 할 수도 있다 고 정의 한다. 무한 순환 그러나 하나 도 변 하지 않 았 다.하면, 만약, 만약... 되다  1. 그러면 이 숫자 는 즐거움 의 숫자 입 니 다.
하면, 만약, 만약...  n  즐 거 운 숫자 면 돌아 갑 니 다.  True  ;아니오  False  。
 
예시:
19
true
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

해법 1:
class Solution {
    //   1:          HashSet ,      ,        
    public boolean isHappy(int n) {
        //    
        if (n == 1) {
            return true;
        }

        // HashSet        
        Set hashSet = new HashSet<>();

        //   hashSet   n,     
        while (!hashSet.contains(n)) {
            hashSet.add(n);
            //   n,         
            n = caculate(n);
        }

        //    ,       ,n    1,        
        return n == 1;        
    }

    private int caculate(int n) {
        // 2019 = 9*9 + 1*1 + 0*0 + 2*2
        int tmp = 0;
        while (n > 0) {
            //       
            int lastDigit = n % 10;
            tmp = tmp + lastDigit * lastDigit;

            //          
            n = n / 10;
        }
        return tmp;
    }
}

좋은 웹페이지 즐겨찾기