我们由题可以得出结论:一共有三种情况,但实际中第三中情况不存在。
证明第三中情况不存在:
我敲的代码
public boolean isHappy(int n) {
int slow=n;
int fast=n;
while(true) {
int sum=0;
while(slow!=0) {
sum+=(slow%10)*(slow%10);
slow/=10;
}
slow=sum;
sum=0;
while(fast!=0) {
sum+=(fast%10)*(fast%10);
fast/=10;
}
fast=sum;
sum=0;
while(fast!=0) {
sum+=(fast%10)*(fast%10);
fast/=10;
}
fast=sum;
if(fast==1) {
return true;
}
if(fast==slow) {
return false;
}
}
}
官方: class Solution { public int isInt(int n) { int sum=0; while(n!=0) { sum+=(n%10)*(n%10); n/=10; } return sum;
}
public boolean isHappy(int n) {
int slow=n;
int fast=isInt(n);
while(slow!=fast) {
slow=isInt(slow);
fast=isInt(fast);
fast=isInt(fast);
}
return slow==1;
}
}