问题描述
给定一个正整数,要求判断其是不是 “快乐数”,”快乐数“ 定义是:求数字的每一位数的平方和得到一个新数,判断这个数是否是 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; } }
|