判断一个整数是否是回文数

题目描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

go代码实现

package main

import (
    "fmt"
    "strconv"
)

/*
方案一:将数字逆转后,与原数字比较
 */
func JudgeReverse1(num int) bool {
    if num < 0 {
        return false
    } else if num < 10 {
        return true
    } else {
        num1 := num
        var result int
        for num1 != 0 {
            result = 10 * result + num1 % 10
            num1 /= 10
        }
        return num == result
    }
}

/*
方案二:基于方案一,进一步优化,只逆转一半,在将两边比较
如1221,比较12和12
12321,比较12和123
 */
func JudgeReverse2(num int) bool {
    if num < 0 {
        return false
    } else if num < 10 {
        return true
    } else {
        var result int
        for num > result {
            result = 10 * result + num % 10
            num /= 10
        }
        return num == result || num == result / 10
    }
}

/*
方案三:先将数字转为字符串,再逆转字符串比较
 */
func JudgeReverse3(num int) bool {
    s := strconv.Itoa(num)
    runes := []rune(s)
    for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
        runes[from], runes[to] = runes[to], runes[from]
    }
    return s == string(runes)
}

func main() {
    a, b, c := 1, -121, 123321
    fmt.Println(JudgeReverse1(a))
    fmt.Println(JudgeReverse1(b))
    fmt.Println(JudgeReverse1(c))

    fmt.Println(JudgeReverse2(a))
    fmt.Println(JudgeReverse2(b))
    fmt.Println(JudgeReverse2(c))

    fmt.Println(JudgeReverse3(a))
    fmt.Println(JudgeReverse3(b))
    fmt.Println(JudgeReverse3(c))
}

运行结果:

GOROOT=C:\Go #gosetup
GOPATH=F:\goPath #gosetup
C:\Go\bin\go.exe build -o C:\Users\windows10\AppData\Local\Temp\___go_build_reverse_go.exe F:/code/test/reverse/reverse.go #gosetup
C:\Users\windows10\AppData\Local\Temp\___go_build_reverse_go.exe #gosetup
true
false
true
true
false
true
true
false
true

Process finished with exit code 0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容