package leetcode;
/**
* Created by w84108989 on 2019/1/4.
*/
//一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,
// 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
//
// 示例:
//
// 输入: 19
// 输出: true
// 解释:
// 12 + 92 = 82
// 82 + 22 = 68
// 62 + 82 = 100
// 12 + 02 + 02 = 1
public class happynum_202 {
public static void main(String[] args) {
isHappy(1);
isHappy(19);
}
public static boolean isHappy(int n) {
String s = String.valueOf(n);
char[] a = s.toCharArray();
int res = 0;
for (int i = 0; i < a.length; i++) {
res = res + Integer.valueOf(a[i]) * Integer.valueOf(a[i]);
}
if (res == 1){
return true;
}
if( res == 4){
return false;
}
return isHappy(res);
}
}
public class Solution {
private int getNextHappy(int n) {
int sum = 0;
while (n != 0) {
sum += (n % 10) * (n % 10);
n /= 10;
}
return sum;
}
public boolean isHappy(int n) {
HashSet<Integer> hash = new HashSet<Integer>();
while (n != 1) {
if (hash.contains(n)) {
return false;
}
hash.add(n);
n = getNextHappy(n);
}
return true;
}
}
leetcode_202
最新推荐文章于 2022-07-05 07:51:10 发布