思路

快慢指针解决无限循环的问题

代码实现

class Solution {
    public boolean isHappy(int n) {
        int fast=n;
        int slow=n;
        do{
            slow=f(slow);
            fast=f(fast);
            fast=f(fast);
            if(slow==1||fast==1) return true;
        }while(fast!=slow);
        return slow==1;
    }

    public int f(int n)
    {
        int sum=0;
        while(n!=0)
        {
            int temp=n%10;
            sum+=temp*temp;
            n=n/10;
        }
        return sum;
    }
}