202. Happy Number - swift

给定一个整数n,计算n每位上数的平方,然后求和(后面简称这个过程为:平方求和)。平方求和的结果继续平方求和,直到平方求和结果为1或者进入没有包含1的无限循环中,计算结束。以1结束的数为happy number。
比如:19 is a happy number
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

参考文章:
1:Happy Number 为什么有环
2:Happy Number 必须要掌握的
3:链表中是否有环及环的起点 cycle detect 及确定环的长度

代码如下:
求平方和:

  func digitSquareSum(n: Int) -> Int {
        var num = n
        var sum = 0
        while(num != 0) {
            sum += Int(pow(Double(num % 10), 2.0))
            num = num/10
        }
        print("\(n) -> \(sum)")
        return sum
    }

参考文章2中的实现代码:

  func isHappy(n: Int) -> Bool {
        var num = n
        while num > 99 {
            num = digitSquareSum(num)
        }
        var con = 5
        while con > 0 {
            if num == 1 {
                break
            }
            num = digitSquareSum(num)
            con -= 1
        }
        return num == 1
    }

参考文章3中的实现代码:

  func isHappy(n: Int) -> Bool {
        var num = n
        while num > 99 {
            num = digitSquareSum(num)
        }
        var head = num;
        var next = num;
        repeat {
            if head == 1 || next == 1{
                break
            }
            head = digitSquareSum(head)
            next = digitSquareSum(next)
            next = digitSquareSum(next)
        } while (head != next)
        return head == 1 || next == 1
    }

你可能感兴趣的:(202. Happy Number - swift)