回文数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回文数相关的知识,希望对你有一定的参考价值。
问题:
求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数 10 的最小值。
package main
import (
"fmt"
"strconv"
)
func reverse(s string)string{
n := len(s)
var sliRev []byte
for i:=n-1;i>=0;i--{
sliRev = append(sliRev, s[i])
}
return string(sliRev)
}
func judge(in int)bool{
decStr := strconv.Itoa(in)
octStr := fmt.Sprintf("%o", in)
binStr := fmt.Sprintf("%b", in)
decStrRev := reverse(decStr)
octStrRev := reverse(octStr)
binStrRev := reverse(binStr)
return decStr == decStrRev && octStr == octStrRev && binStr == binStrRev
}
func main(){
for i:=11;i<1000;i+=2{
if judge(i){
fmt.Println(i, "is palindromic.")
}
}
}
这是比较麻烦的方法:
- 二进制的回文数必然是1xxx1这样的数,所以必是奇数,从11开始逐个判断;
- 把数转成二进制和八进制的字符串形式,然后逆序拼接成字符串;
- 3种进制的情况下分别对新字符串和原字符串进行比较,全都相同的数(11到1000以内)我只找到了585。
以上是关于回文数的主要内容,如果未能解决你的问题,请参考以下文章