Palindrome
An integer is a palindrome when it reads the same backward as forward.
一,第一种方法,分别取出整数的各位数,然后用末尾的数字乘最高位的位数。以121为例,第一次取出个位1,第二次取出十位数字2,将1乘以10加成2.第三次取出百位数字1,将12乘以10加上百位数字1.如果和原来的数字相同。则为回文数。
bool isPalindrome(int x) {
if(x<0){
return false;
}
int num = x,flag = 0;
while(num!=0){
flag = flag * 10 + num%10;
num = num/10;
}
return flag == x;
}
第二种方法用到栈的思想。将数字的各位作为字符串分别入栈。
同时将字符串也存在数组中。将字符串依次出栈与数组比较。如果完全一样,则为回文数。
class Solution {
public:
bool isPalindrome(int x){
stack<int> s;
int check[1000];
if(x<0){
return false;
}
//将x的各位数分别存入数组和压入栈中
for(int i =0;x>0;i++){
s.push(x%10);
check[i] = x%10;
x = x/10;
}
int j = 0;
while(!s.empty()){
if(s.top()!=check[j]){
return false;
}
j++;
s.pop();
}
return true;
}
};
缺点
用栈的思想,将数字先转化为字符串。需要一块额外的空间存储。又慢又占内存。