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

LeetCode -- Happy Number

时间:2015-10-14 01:37:39      阅读:120      评论: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




判断一个数字是否为happy number。
按照描述来做就可以了,把每位的平方累加,得到新数字,如果和为1则返回true,否则使用哈希来存已经计算过的数字。如果已经在哈希中存在,返回false。


实现代码:




public class Solution {
    public bool IsHappy(int n) {
        var digs = n.ToString();
    	var hash = new Dictionary<int, bool>();
    	
    	while(true){
    		int r = 0;
    		for(var i = 0;i < digs.Length; i++){
    			var x = int.Parse(digs[i].ToString());
    			r += x * x;
    		}
    		if(r == 1){
    			return true;
    		}
    		if(!hash.ContainsKey(r)){
    			hash.Add(r, true);
    			digs = r.ToString();
    		}
    		else{
    			return false;
    		}
    	}
	
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode -- Happy Number

标签:

原文地址:http://blog.csdn.net/lan_liang/article/details/49108359

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