leetcode 快乐数

/**
 * 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
 * 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
 * 如果这个过程 结果为1,那么这个数就是快乐数。
 *
 * 作者:力扣 (LeetCode)
 * 链接:https://leetcode.cn/leetbook/read/hash-table/xh1k9i/
 * 来源:力扣(LeetCode)
 * 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 * @param n
 * @return
 */
public boolean isHappy(int n) {

   HashSet<Integer> hashSet = new HashSet<>();
    int result=0;
    while (true){
        result = getPow(n);
        if(result == 1){
            return true;
        }
        if(hashSet.contains(result)){
            return false;
        }
        hashSet.add(result);
        n = result;
    }

}

private static int getPow(int n){
    // 对n 进行分成 各个位数相平方相加
    String str = n+"";
    char[] chars = str.toCharArray();
    int sum = 0;
    for (int i = 0; i < chars.length; i++) {
        sum += Math.pow(Integer.parseInt(String.valueOf(chars[i])),2);
    }
    return sum;
}

版权声明:本文为qq_28852755原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。