题目:判断一个整数是不是回文,要求,空间复杂度为o(1).
思路:
1.若为负数,返回false;
2.若为0,或者长度为1(可优化为<10),返回false;
3.根据长度length,依次比较头尾是否相等。
总结&&吐槽:C太小众了,多是用C++或者Java。我的算法不够优化,仅击败了28%.....算法思想有待改进(有种思路是:先逆转,再判断是否相等)。
代码:
#include
bool isPalindrome(int x) {
int start,end,length=1,a;
a=x;
if(x<0) return 0;
if(x==0) return 1;
while(a/10>0) a=a/10,length++;
if(length==1) return 1;
for(;length>1;length=length-2){
start=x/(int)(pow(10,length-1));
x=x%(int)(pow(10,length-1));
end=x%10;
x=x/10;
if(start!=end) return 0;
}
return 1;
}
本文介绍了一种用于判断整数是否为回文数的算法,该算法的空间复杂度为O(1)。通过对比整数的首位数字来确定其是否回文,并详细解释了实现过程及代码细节。
5953

被折叠的 条评论
为什么被折叠?



