码迷,mamicode.com
首页 > 移动开发 > 详细

[LeetCod] Happy Number

时间:2015-08-21 13:24:26      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

  • 12 + 92 = 82
  • 82 + 22 = 68
  • 62 + 82 = 100
  • 12 + 02 + 02 = 1

     个人感觉这道题重点在于,我们用loop循环来计算这个数是不是happy number(计算方法很简单)

     但是如果这个数不是Happy Number,怎样才能让这个loop停止呢。

     这里就可以用到HashSet,当n在计算过程中出现重复的值时,就证明这个数已经不可能是happy number了,我们的loop可以停止了。

     用hashset里面的contains()method来判断。(记得add()method一定要放在前面不要末尾哦)n的值也要随时更新。

     代码如下。~

public class Solution {
    public boolean isHappy(int n) {
       if(n==1) return true;
       if(n<=0) return false;
       int result=0;
       HashSet<Integer> hash=new HashSet<Integer>();
       while(!hash.contains(n)){
           result=0;
           hash.add(n);
           while(n!=0){
               int temp=n%10;
               result=result+temp*temp;
               n=n/10;
           }
           n=result;
           if(n==1){
               return true;
           }
       }
       return false;
    }
}

 

[LeetCod] Happy Number

标签:

原文地址:http://www.cnblogs.com/orangeme404/p/4747416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!