提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
思路
利用set集合存储每次出现的数,一旦出现重复的,则不再是快乐数
一、题目描述
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
二、代码
代码如下(示例):
package Hash;
import java.util.HashSet;
import java.util.Scanner;
public class _202快乐数 {
public static boolean isHappy(int n) {
HashSet<Integer> set=new HashSet<Integer>();
while(n!=1) {
String s=String.valueOf(n);
long newn=0;
for(int i=0;i<s.length();i++) {
newn=newn+(s.charAt(i)-48)*(s.charAt(i)-48);
}
// System.out.print(newn+"a ");
for(Integer ss:set) {
// System.out.println(ss+"b ");
if(newn==ss)
return false;
}
n=(int) newn;
set.add(n);
}
return true;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int n=sc.nextInt();
System.out.println(isHappy(n));
}
}
}
总结
Set用于统计元素是否重复,非常方便