202.happy-number.go 322 B

12345678910111213141516171819202122
  1. func sqr(x int) int {
  2. return x * x
  3. }
  4. func isHappy(n int) bool {
  5. occur := make(map[int]struct{})
  6. for {
  7. if _, ok := occur[n]; ok {
  8. return false
  9. } else if n == 1 {
  10. return true
  11. }
  12. occur[n] = struct{}{}
  13. var next int
  14. for next = 0; n != 0; n /= 10 {
  15. next += sqr(n % 10)
  16. }
  17. n = next
  18. }
  19. return false
  20. }