快乐数
题目链接:快乐数
思路:
这道题乍一看不知道怎么解,了解什么是快乐数后非常简单
突破点就两个:1.如何拆解任意长度的整数 2.如何判断非快乐数已经进入循环状态
第一个直接循环拆就行了,第二个在百度了快乐数后了解,所有非快乐数最终都会进入4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。
代码:
public static boolean isHappy(int n) {
List<Integer> list = new ArrayList<Integer>();
while(n!=4) {
while(n!=0) {
list.add(n%10);
n/=10;
}
int temp = 0;
for(int i:list) {
temp+=i*i;
}
if(temp==1) {
return true;
}else {
list.clear();
n = temp;
}
}
return false;
}