内容简介:这是一个比较简单的题目,题干如下:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:
回文数(Palindrome-Number)
这是一个比较简单的题目,题干如下:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣
解题思路
按照题目的定义: 负数一定不是回文数,并且 [0,9] 的数一定是回文数 。
其次,我们稍微延伸一下题目,如果判断一个字符串是否是回文字符串,我们会怎么做?常规思路就是设置两个指针 i 和 j 分别指向字符串的第一个字符和最后一个字符,然后 指针 i 向后挪 , 指针 j 向前挪 ,每挪动一次就比较 指针 i 指向的字符是否和指针 j 指向的字符相等 。具体流程如下:
如上,那我们是不是可以沿用判断字符串是否是回文字符串的思路来判断数字呢?当然是可以的啦。
所以现在的问题变成了怎么拿到数字的第一位和最后一位?上一篇文章 让我们一起啃算法----整数反转 我们知道了 一个数与10取模可以得到最后一位的值 。那第一位的值如何得到呢?可以用如下方式:
假设目标数字是 3245,它是一个四位数,最小的四位数是1000,3245 / 1000 就可以拿到第一位的值即 3 。
拿到了第一位的值和最后的一位的值之后,我们只需要判断是否相等即可。
具体的代码实现
GO语言实现:
func isPalindrome(x int) bool { if x < 0 { return false } div := 1 // 得到相应位数的最小值 // 例如:3245,那么div的值就是1000 for x / (div) >= 10 { div *= 10 } for x != 0 { // 得到第一位的值 left := x / div // 得到最后一位的值 right := x % 10 if left != right { return false } // 去掉第一位和最后一位 // 例如:( 3245 - 3 * 1000 )/ 10 = 24 x = (x - left * div) / 10 // 因为去掉了两位,因此div也相应的调整 div /= 100 } return true }
总结
欢迎关注我们的微信公众号,每天学习 Go 知识
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 回文算法(JavaScript)
- java算法题:最长回文串
- 【算法趣题】Q01 回文十进制数
- 高频算法面试题(字符串) leetcode 125. 验证回文串
- 求回文数的三种算法的c语言描述
- 算法 - 找最长回文字符串, 从3s到30ms的解法说明
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
赢在设计
[美] 洛芙迪 (Lance Loveday)、[美] 尼豪斯 (Sandra Niehaus) / 刘淼、枊靖、王卓昊 / 人民邮电出版社 / 2010-8 / 55.00
企业总是面临在网站设计和改进方面进行投资的抉择。怎样才能让有限的资金发挥出最大的效益呢?网站设计不应只是把网站做得赏心悦目,它更应该是提高经济收益和获得竞争优势的战略利器。是时候让网站发挥其潜能,以业务指标为导向来做设计决策,为提升网站收益而设计了。 作者凭借多年为众多网站做咨询工作的经验,为我们揭示了赢在设计的奥秘。它针对目前网站设计中存在的典型问题,先从宏观上探讨解决问题的战略手段,围绕......一起来看看 《赢在设计》 这本书的介绍吧!