快乐数 朴灿烈づ我的快乐病毒、 2021-09-26 15:12 308阅读 0赞 **问题描述:** 写一个算法来判断一个数是不是“快乐数”。 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,或是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 > 案例: 19 是一个快乐数。 > 1^2 + 9^2 = 82 > 8^2 + 2^2 = 68 > 6^2 + 8^2 = 100 > 1^2 + 0^2 + 0^2 = 1 class Solution { public boolean isHappy(int n) { if(n==1) return true; Set<Integer> set = new HashSet<Integer>();//保存出现过的数 int temp = n; while(true){ temp = getNextNum(temp); if(temp == 1) return true; if(set.contains(temp)){ //如果集合中存在temp,则证明进入了循环,即不是快乐数 return false; }else{ set.add(temp); } } } private int getNextNum(int n) { // TODO Auto-generated method stub int res = 0; int temp = 0; while(n>0){ temp = n % 10; res += temp*temp; n = n/10; } return res; } }
还没有评论,来说两句吧...