0%

leetCode-202:Happy Number

问题描述

给定一个正整数,要求判断其是不是 “快乐数”,”快乐数“ 定义是:求数字的每一位数的平方和得到一个新数,判断这个数是否是 1,不是的话重复上述过程,直到数字是 1,或是无线循环。最终如果能得到数字 1, 则说明这个数是 “快乐数”,否则不是。题目链接:点我

样例输入输出

输入:19

输出:true

解释:

1 * 1 + 9 * 9 = 82

8 * 8 + 2 * 2 = 68

6 * 6 + 8 * 8 = 100

1 * 1 + 0 * 0 + 0 * 0 = 1

输入:2

输出:false

问题解法

此题比较简单,直接按照题目意思进行模拟计算判断即可,代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public boolean isHappy(int n) {
String str = String.valueOf(n);
Set<String> set = new HashSet<>();
while (!str.equals("1")) {
int sum = 0;
for (int i = 0; i < str.length(); i++) {
int num = str.charAt(i) - '0';
sum += num * num;
}

str = String.valueOf(sum);
if (set.contains(str)) {
return false;
}

set.add(str);
}

return true;
}
}