202. Happy Number
阿新 • • 發佈:2018-04-02
creat port scrip http mar markdown mark ava main
原題鏈接:https://leetcode.com/problems/happy-number/description/
實現如下:
import java.util.HashSet;
/**
* Created by clearbug on 2018/2/26.
*/
public class Solution {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.isHappy(1));
System.out.println (s.isHappy(2));
System.out.println(s.isHappy(19));
}
/**
* 方法一:這道題目沒看出啥太大的規律性,只簡單的發現只要 n % 10 == 0 時,那麽便是返回 true 的時候了;同時為了防止無限循環,必須用
* 一個數組來存儲處理過的數值,若出現循環了則返回 false;
*
* @param n
* @return
*/
public boolean isHappy(int n) {
HashSet<Integer> set = new HashSet<>();
while (set.add(n)) {
if (n == 1) {
return true;
}
n = nextN(n);
}
return false;
}
private int nextN(int n) {
int res = 0;
while (n >= 10) {
int remainder = n % 10;
res += remainder * remainder;
n /= 10 ;
}
if (n > 0) {
res += n * n;
}
return res;
}
}
202. Happy Number