回文数字

2020-03-14  本文已影响0人  韩小禹
package main

import "fmt"

//回文数字:数字从左往右和从右往左必须一致,否则不满足回文规则
//声明一个变量reverseNumber并赋予初始值0,用于存放得到的反转数字。
//将原始数字 %10 会得到数字的最后一个数,然后将reverseNumber*10 + 得到的反转数字
//将原始数字 /10 然后将
//循环判断,x > reverseNumber时说明没有得到原始数字长度的一半,当x<=reverseNumber时说明反转数字的长度已经达到原始数字的一半。
//得到原始数字的一半时判断x是否等于reverseNumber,或者x是否等于reverseNumber/10
func IsPalindrome(x int) bool {
    // 如果 x <= 0 ,说明不是回文数
    // 如果 x % 10 = 0,说明x的最后一个数字是0,要满足回文的要求那么第一个数字就必须是0,所有再次判断x != 0
    if x < 0 || (x%10 == 0 && x != 0) {
        return false
    }

    //用于记录回文数字
    reverseNumber := 0
    for x > reverseNumber {
        // x % 10 是为了得到x的最后一位数字
        reverseNumber = reverseNumber*10 + x%10
        //每循环一次将x/10,当x不大于reverseNubmer的时候,说明从后往前得到了原始数字的一半
        x /= 10
    }

    //两位数时,x == reverseNumber
    //三位数时,x == reverseNumber/10
    return x == reverseNumber || x == reverseNumber/10
}

func main() {
    //n := 1220
    n := 1221
    fmt.Println(IsPalindrome(n))
}
上一篇下一篇

猜你喜欢

热点阅读