forked from haoel/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhappy_number.cpp
More file actions
51 lines (48 loc) · 953 Bytes
/
happy_number.cpp
File metadata and controls
51 lines (48 loc) · 953 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <string>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
/**
* 比较简单
* 为了防止死循环的出现,这里使用set来保存之前已经计算过的数,当发现死循环时直接返回false
*/
bool isHappy(int n)
{
if (n <= 0)
{
return false;
}
int number = n;
set<int> number_set;
number_set.insert(number);
while (number != 1)
{
int value = 0;
while (number > 0)
{
int tmp = number % 10;
value += tmp * tmp;
number = number / 10;
}
if (value == 1)
{
return true;
}
number = value;
if (number_set.find(number) != number_set.end())
{
return false;
}
else
{
number_set.insert(number);
}
}
return true;
}
int main()
{
cout << isHappy(1) << endl;
return 1;
}