题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和逆序(从右向左)读起来都一样的数。
示例1:
输入:121
输出:true
示例2:
输入:-121
输出:false
解释:从左向右读为-121,从又向左读为121-。因此不是回文数
示例3:
输入:10
输出:false
解释:从右向左读为01。因此不是回文数
题目分析:
若一个整数有偶数位则整数左右两边呈对称分布,若为奇数位则除中间位外对称分布。而中间位不影响它是否是回文数。因为不管正序还是逆序其所在位置相同。因此可将整数转化为字符串。同时从头和尾同时比较,若不同则不是回文数,若相同则头++,尾--,直至头尾相等结束。
题解代码:
class Solution {
public boolean isPalindrome(int x) {
String s1 = Integer.toString(x); //将整数转化为字符串
int right = 0;
int left = s1.length()-1;
while(right<left) //当right和left相等时循环结束
{
if(s1.charAt(right)==s1.charAt(left)) //当字符串左右两边相同时继续比较
{
right++;
left--;
}
else //若不相等则不是回文数
{
return false;
}
}
return true;
}
}
算法分析:
算法时间复杂度主要体现在一重while循环为O(n)。