LeetCode 202. Happy Number
题目描述:
编写一个算法来判断一个数是不是“快乐数”。
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
示例:
输入: 19
输出: true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
解题思路:
循环相加查看是否等于一
还要主意有可能造成循环,所以引用一个Set变量
代码:
package easy;
import java.util.HashSet;
import java.util.Set;
public class HappyNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=2;
System.out.println(isHappy(n));
}
public static boolean isHappy(int n) {
int count=0;
Set<Integer> s=new HashSet<>();
if(n==1)
return true;
while(n!=1)
{
s.add(n);
count=0;
while(n!=0)
{
count+=Math.pow(n%10, 2);
// System.out.println(count);
n=n/10;
}
if(count==1)
return true;
else
{
if(s.contains(count))
return false;
else
n=count;
}
}
return false;
}
}