一 题目:
二 思路:
- 如果是快乐数肯定能变1,如果是变到之前的数,就可以终止了
- 如果这个数变成了之前出现过的数,那么再往下计算也只是重复,肯定不是快乐数了
三 代码:
public static boolean isHappy(int n) {
//如果是快乐数肯定能变1,如果是变到之前的数,就可以终止了
Set<Integer> dup=new HashSet<>();
while (true){
if (n==1){
return true;
}
char[] charArray = String.valueOf(n).toCharArray();
n=0;
for (char c : charArray) {
n=n+(c-'0')*(c-'0');
}
if (dup.contains(n)){
return false;
}else {
dup.add(n);
}
}
}