Leetcode 202: Happy Number

问题描述:

Write an algorithm to determine if a number n 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.
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.
Return true if n is a happy number, and false if not.

思路:
求每一位之和比较容易做,这里不赘述。我没有想到检查cycl的方法。答案提示了用hashmap,每次求的和在hashmap中先搜索一遍,如果没有就继续求和,如果有就证明有循环出现,退出循环并返回false

代码比较简单,一遍过:

class Solution {
public boolean isHappy(int n) {
Map<Integer, Integer> map = new HashMap<>();
int sum=n;
while (sum!=1){
if (!map.containsKey(sum)){
map.put(sum,1);
sum=calculate_bit_square(sum);
}
else{
return false;
}
}
return true;
}

public int calculate_bit_square(int x){
    int result = 0;
    while (x>0){
        int remainder = x%10;
        result = result + remainder * remainder;
        x=x/10;
    }
    return result;
}

}

上一篇:python函数str()避免类型错误


下一篇:LeetCode #202. Happy Number