Golang算法 - Leetcode

 主页   资讯   文章   代码   电子书 

9. Palindrome Number

Leetcode 链接

题目

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true
Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:

Coud you solve it without converting the integer to a string?

题意解析

判断一个数字是否为回文串

解决方案一

  • int 转为 string,然后判断是否为回文串

Go 代码一

func isPalindrome(x int) bool {
    s := strconv.Itoa(x)

    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
        if s[i] != s[j] {
            return false
        }
    }
    return true
}

解决方案二

不需要把数字转为字符串。首先,如果这个数是负数,那么就不是回文串,返回false。如果不是负数,那么就对数字取模并存入数组,通过数组来做回文串判断。

Go 代码二

func isPalindrome(x int) bool {
    if x < 0 {
        return false
    }

    arr := make([]int, 0)
    for x!=0  {
        arr = append(arr, x%10)

        x /= 10
    }

    for i,j := 0,len(arr)-1; i<j; i,j=i+1,j-1 {
        if arr[i] != arr[j] {
            return false
        }
    }

    return true
}