LeetCode 9、回文数
LeetCode 9、回文数
一、题目描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
二、题目解析
三、参考代码
public class Solution {
public boolean isPalindrome(int x) {
// 转换为字符串数组的形式
String xStr = Integer.toString(x);
char[] xArray = xStr.toCharArray();
// 左边索引的位置在 0
int left = 0;
// 右边索引的位置在 xArray.length - 1
int right = xArray.length - 1;
// 两个索引向内移动
// left 向右移动
// right 向左移动
while (left <= right) {
// 判断这两个元素值是否相同
if (xArray[left] != xArray[right]) {
// 如果不同,直接返回 false
return false;
}
// 否则,left 向右移动
left++;
// right 向左移动
right--;
}
// 返回 true
return true;
}
}
参考代码
class Solution:
def isPalindrome(self, x: int) -> bool:
# 转换为字符串数组的形式
xArray = list(str(x))
# 左边索引的位置在 0
left = 0
# 右边索引的位置在 len(xArray) - 1
right = len(xArray) - 1
# 两个索引向内移动
# left 向右移动
# right 向左移动
while left <= right:
# 判断这两个元素值是否相同
if xArray[left] != xArray[right]:
# 如果不同,直接返回 False
return False
# 否则,left 向右移动
left += 1
# right 向左移动
right -= 1
return True
参考代码
#include <string>
#include <cctype>
using namespace std;
class Solution {
public:
bool isPalindrome(string s) {
// isalnum() 方法检测字符串是否由字母和数字组成
// 转换为字符串数组的形式
string xArray;
for (char ch : s) {
if (isalnum(ch)) {
xArray += tolower(ch);
}
}
// 左边索引的位置在 0
int left = 0;
// 右边索引的位置在 len(xArray) - 1
int right = xArray.size() - 1;
// 两个索引向内移动
// left 向右移动
// right 向左移动
while (left <= right) {
// 判断这两个元素值是否相同
if (xArray[left] != xArray[right]) {
// 如果不同,直接返回 false
return false;
}
// 否则,left 向右移动
left++;
// right 向左移动
right--;
}
return true;
}
};