题目:回文数
- 题号:9
- 难度:简单
- https://leetcode-cn.com/problems/palindrome-number/
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
提示:
- − 2 31 < = x < = 2 31 − 1 -2^{31} <= x <= 2^{31} - 1 −231<=x<=231−1
进阶:
你能不将整数转为字符串来解决这个问题吗?
实现
C#语言
方法一:
public class Solution
{
public bool IsPalindrome(int x)
{
string s1 = x.ToString();
string s2 = string.Empty;
foreach (char c in s1)
{
s2 = c + s2;
}
return s1 == s2;
}
}
方法二:
public class Solution {
public bool IsPalindrome(int x) {
if (x < 0)
return false;
int bit = 1;
while (x / bit >= 10)
{
bit = bit * 10;
}
while (x > 0)
{
int left = x % 10;
int right = x / bit;
if (left != right)
{
return false;
}
x = (x % bit) / 10;
bit = bit / 100;
}
return true;
}
Python语言
方法一:
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
s1 = str(x)
s2 = s1[::-1]
return s1 == s2
方法二:
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
bit = 1
while x // bit >= 10:
bit *= 10
while x > 0:
left = x % 10
right = x // bit
if left != right:
return False
x = (x % bit) // 10
bit = bit // 100
return True