美文网首页
判断一个整数是否是回文数

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

作者: sjyu_eadd | 来源:发表于2021-06-29 15:37 被阅读0次

题目描述:

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

示例 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

相关文章

  • ARTS-Week3 回文数、内存泄漏排查、DWR框架

    Algorithm:回文数判断 LeetCode原题链接 题目: 判断一个整数是否是回文数。回文数是指正序(从左向...

  • Leetcode(9) - 回文数 - java版

    Leetcode(9) - 回文数 - java版 题目 难度: 简单 判断一个整数是否是回文数。回文数是指正序...

  • 每日一个小算法之判断回文数20190811

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

  • LeetCode(PHP)之回文数

    题目:回文数(Palindrome Number) 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从...

  • leecode刷题(31) -- 回文数

    leecode刷题(31) -- 回文数 回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右...

  • java 回文数:判断一个整数是否是回文数

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

  • LeetCode9.回文数 JavaScript

    LeetCode9.回文数 JavaScript 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右...

  • 判断回文数

    判断一个数是否为回文数例如:12321,34543, 2332, 2等整数是回文数342,443,10010等整数...

  • 回文数

    回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入...

  • 【leetcode系列】003-回文数

    题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 注意 回文数...

网友评论

      本文标题:判断一个整数是否是回文数

      本文链接:https://www.haomeiwen.com/subject/cgckultx.html