回文数五位和六位c语言,回文数的golang实现

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

输入:

输出: true

输入: -

输出: false

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

输入:

输出: false

解释: 从右向左读, 为 。因此它不是一个回文数。

首先分析题意,只要正序读与反序读时一样的,那就是回文数,那么负数就可以排除掉。

首先我们能想到的就是把整数转成字符串,然后比较字符串的第一位与最后一位、第二位与倒数第二位。。。以此类推,只要有不一样的就返回false

func isPalindrome(x int) bool {

if x < {

return false

}

s := strconv.Itoa(x)//把整数转成字符串

for i, j := , len(s)-; i < j; i, j = i+, j- {

if s[i] != s[j] {

return false

}

}

return true

}

当然我们也可以不转成字符串来比较,那就有点麻烦,我们要借助一些容器,比如slice,首先我们要把整数每一位都拿出来:

var is []int

var i float64 =

for x != {

temp := x % int(math.Pow(, i)) / int(math.Pow(, i-))//这里取余数的时候要注意去到20、100类似的数据,所以要再进行一次取模

x -= temp * int(math.Pow(, i-))

i++

is = append(is, temp)

}

拿到保存着每一位数字的slice之后的比较就跟字符串的比较一样了:

for o, p := , len(is)-; o < p; o, p = o+, p- {

if is[o] != is[p] {

return false

}

}

return true

整体不用转成字符串的代码:

func isPalindrome(x int) bool {

if x < {

return false

}

var is []int

var i float64 =

for x != {

temp := x % int(math.Pow(, i)) / int(math.Pow(, i-))

x -= temp * int(math.Pow(, i-))

i++

is = append(is, temp)

}

for o, p := , len(is)-; o < p; o, p = o+, p- {

if is[o] != is[p] {

return false

}

}

return true

}

我们再来比较一下两种方法:

首先转字符串的代码量较少(手动狗头)

其次时间复杂度:

转字符串:O(N/2)

不转字符串:O(N+N/2)

空间复杂度:

转字符串:O(N)

不转字符串:O(2N)

比较下来,还是转字符串的好

还有一种方法从LeetCode上看到:

func isPalindrome3(x int) bool {

// 特殊情况:

// 当 x < 0 时,x 不是回文数。

// 同样地,如果数字的最后一位是 0,为了使该数字为回文,

// 则其第一位数字也应该是 0

// 只有 0 满足这一属性

if x < || (x% == && x != ) {

return false

}

revertedNumber :=

for x > revertedNumber {

revertedNumber = revertedNumber* + x%

x /=

}

// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。

// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,

// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。

return x == revertedNumber || x == revertedNumber/

}

LeetCode Golang 9&period;回文数

9. 回文数 第一种办法 :itoa 转换为字符串进行处理: package main import ( "strconv" "fmt" ) //判断一个整数是 ...

hdu1282回文数猜想

Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

C语言 &&num;183&semi; 特殊回文数

问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

Java判断回文数算法简单实现

好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

luogu1207双重回文数&lbrack;usaco1&period;2&rsqb;Dual Palindromes

题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...

luogu10125回文数&lbrack;noip1999 Day1 T1&rsqb;

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

洛谷 P1015 回文数 Label:续命模拟QAQ

题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

回文数 第N个回文数

判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...

随机推荐

数论 : 模运算法则(poj 1152)

题目:An Easy Problem! 题意:求给出数的最小进制. 思路:暴力WA: discuss中的idea: 给出数ABCD,若存在n 满足 (A* n^3 +B*n^2+C*n^1+D*n^0 ...

hadoop namenode多次格式化后,导致datanode启动不了

jps hadoop namenode -format dfs directory : /home/hadoop/dfs --data --current/VERSION #Wed Jul :: CS ...

SetEvent&sol;ResetEvent

在自己主动重置事件对象中,当WaitSingleObject/WaitForMultipleObjects接收到SetEvent发送过来的信号后则返回WAIT_OBJECT_0,此时操作系统(待定)自 ...

10-IOSCore - 应用间通信、本地通知

一.应用间通信 URL 调用系统服务: tel:11111 sms:xxx@163.com http:// URL深入 类型://主机:端口/地址?参数 label框等于文字大小快捷键:command ...

HBase——HMaster启动之二&lpar;HMaster线程的调用&rpar;

紧接着上一节HMaster的构建完成.接下来会调用HMaster调用master.start(),master.join(). 由HMaster的继承关系,很明显,他是Runnable的子类.也就是说 ...

Practice&vert; 面向对象

实参与形参的传递机制 * 实参给形参赋值: * 1.基本数据类型: * 实参给形参的数据值,形参的修改和实参无关 * 2.引用数据类型 * 实参给形参的地址值,如果这个地址值修改“属性”会影响实参,但 ...

2019&period;02&period;15 codechef Favourite Numbers(二分&plus;数位dp&plus;ac自动机)

传送门 题意: 给444个整数L,R,K,nL,R,K,nL,R,K,n,和nnn个数字串,L,R,K,数字串大小≤1e18,n≤65L,R,K,数字串大小\le1e18,n\le65L,R,K,数字 ...

jmeter处理带表单的接口请求

如何用jmeter处理带选项的表单接口请求 下面是用到了F12 抓包的处理方法 下图是直接手动在页面上请求的结果 下面就是采用F12抓包抓到url 和FormData 分别把上面获取的url和Form ...

juqery学习3之juqery对象条件筛选

代码例子:某个div块下的字体样式的控制. //script代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值