쾌락 수 [LeetCode 집합 set 의 사용]
1293 단어 소 객 망 & LeetCode
하나의 '즐거움 수' 는 하나의 정수 에 대해 매번 이 수 를 모든 위치 에 있 는 숫자의 제곱 으로 바 꾼 다음 에 이 과정 을 반복 하면 이 수가 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;
}
}
}
}