diff --git a/leetcode/0202.Happy-Number/202. Happy Number.go b/leetcode/0202.Happy-Number/202. Happy Number.go index 3764600e..130731b6 100644 --- a/leetcode/0202.Happy-Number/202. Happy Number.go +++ b/leetcode/0202.Happy-Number/202. Happy Number.go @@ -1,27 +1,32 @@ package leetcode -func isHappy(n int) bool { - if n == 0 { - return false - } - res := 0 - num := n - record := map[int]int{} - for { - for num != 0 { - res += (num % 10) * (num % 10) - num = num / 10 - } - if _, ok := record[res]; !ok { - if res == 1 { - return true - } - record[res] = res - num = res - res = 0 - continue - } else { - return false - } +func getSquareOfDigits(n int) int { + squareOfDigits := 0 + temporary := n + + for temporary != 0 { + remainder := temporary % 10 + squareOfDigits += remainder * remainder + temporary /= 10 } + + return squareOfDigits +} + +func isHappy(n int) bool { + record := map[int]int{} + + for n != 1 { + record[n] = n + + n = getSquareOfDigits(n) + + for _, previous := range record { + if n == previous { + return false + } + } + } + + return true } diff --git a/leetcode/0202.Happy-Number/202. Happy Number_test.go b/leetcode/0202.Happy-Number/202. Happy Number_test.go index d8e4e7f9..a80ff83c 100644 --- a/leetcode/0202.Happy-Number/202. Happy Number_test.go +++ b/leetcode/0202.Happy-Number/202. Happy Number_test.go @@ -35,6 +35,16 @@ func Test_Problem202(t *testing.T) { para202{19}, ans202{true}, }, + + { + para202{2}, + ans202{false}, + }, + + { + para202{3}, + ans202{false}, + }, } fmt.Printf("------------------------Leetcode Problem 202------------------------\n")