程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode -- Happy Number

LeetCode -- Happy Number

編輯:C++入門知識

LeetCode -- Happy Number



題目描述:
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();
    	
    	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;
    		}
    	}
	
    }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved