202. Happy Number

原文题目:

202. Happy Number

读题:

题目很简单,将整数的每位取平方相加看是否等于1,如果死循环那么就返回False

//方法一
class Solution 
{
public:
	int getResult(int n)
	{
		int temp = n;
		int result = 0;
		while(temp)
		{
			result += (temp%10)*(temp%10);
			temp = temp/10;
		}
		return result;
	}
	bool isHappy(int n) 
	{
		int re = 0;
		int count = 0;
		re = getResult(n);
		if(re == 1)
		{
			return TRUE;
		}
		else
		{
			while(re!=1)
			{
				re = getResult(re);
				count++;
				if(count > 30) //假设30次后仍然未到1,则返回False,这里其实不是很合理。
				{
					return FALSE;
				}
			}
		}
		return TRUE;
	}
};

//方法二
class Solution {
public:

	int sq_sum(int n) {
		int sq  = 0;
		while (n > 0) {
			sq += pow(n % 10, 2);
			n = n/10;
		}
		return sq;   
	}

	bool isHappy(int n) {

		int num = n;
		unordered_set<int> map; //C++ 11新增
		while (num > 0) {
			map.insert(num);
			num = sq_sum(num);
			if (num == 1)
				return true;
			if (map.count(num)) //如果在set中找到num,说明存在死循环,那么返回False
				return false;
		}



	}
};

  

原文地址:https://www.cnblogs.com/xqn2017/p/8006796.html