쾌락 수 [LeetCode 집합 set 의 사용]

하나의 알고리즘 을 만들어 서 하나의 숫자 가 '쾌락 수' 인지 아 닌 지 를 판단 하 다.
하나의 '즐거움 수' 는 하나의 정수 에 대해 매번 이 수 를 모든 위치 에 있 는 숫자의 제곱 으로 바 꾼 다음 에 이 과정 을 반복 하면 이 수가 1 로 변 할 때 까지 무한 순환 일 수도 있 지만 1 로 변 하지 않 을 수도 있다.1 로 변 할 수 있다 면, 이 수 는 즐거움 수 다.
예시: 
  : 19
  : true
  : 
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

사고: set 를 사용 하여 매번 순환 한 후에 계 산 된 값 을 저장 한 다음 에 이 값 이 이미 집합 에 있 는 지 판단 합 니 다. 만약 에 집합 에서 무한 순환 에 들 어 갔다 는 것 을 설명 하면 false 로 돌아 갑 니 다.
import java.util.HashSet;
import java.util.Set;
public class Main{
    public static void main(String[] args) {
        System.out.println(isHappy(12345));
    }

    public static boolean isHappy(int n) {
        Setset=new HashSet<>();
        set.add(n);
        int sum;
        while(true){
            if(n==1){  
                return true;
            }

            sum=0;
            while(n>=1){
                int c=n%10;
                n=n/10;
                sum+=c*c;
            }
            n=sum;
            boolean b=set.add(n);  //    set ,       ,    true,
            if(b==false){          //      ,    false
                return false;
            }
        }
    }
}

좋은 웹페이지 즐겨찾기