题目:判断一个整数是不是回文,要求,空间复杂度为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;
}