202. 快乐数

题目描述

编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

代码实现

class Solution {
public:
    bool isHappy(int n) {

        if(n <= 0)
            return false;
    	if(n == 1)
    		return true;
        //利用这个集合,方便与剪枝操作
    	unordered_set<int> s;
    	int cur = n;
        s.insert(n);
    	while(true)
    	{
    		int next = 0;
    		while(cur>0)
    		{
    			next+=(cur%10)*(cur%10);
    			cur /=10;
    		}
    		if(next == 1)
    			return true;
    		if(s.find(next) ==s.end())
    		{
    			s.insert(next);
    			cur = next;
    		}
    		else
    			return false;
    	}
    	return false;        
    }
};

posted on 2021-04-03 18:31  朴素贝叶斯  阅读(20)  评论(0编辑  收藏  举报

导航