9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
-
示例 1:
- 输入: 121
- 输出: true
-
示例 2:
- 输入: -121
- 输出: false
- 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
-
示例 3:
- 输入: 10
- 输出: false
- 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
昨天看题目的时候不小心看了一下官方的解释,所以相当于部分借鉴了官方解法…,但是好像还没是没有官方写的好.
下面是我自己的解法 顺便放上能完整运行的c程序
|
|
我来解释一下上面那个while循环里的内容
首先,跳出条件是left<=right,即左边大于右边
比如 12361 当读取到中间的时候 left=12 right=163 即左边比右边低一位(x为奇数) 或者 相同位数的时候跳出(x为偶数)
right=right*10+left%10这个没什么好解释的,就是右边又多了一位
接下来必须判断一次 left==right 因为当x为单数时 比如x=121,left=12 right=12 是应该返回true的,没有办法很好的解决这个问题,所以需要增加一次判断
接下来摆官解
|
|