题目链接如下:Leetcode 09
大致描述一下:判断一个整数是不是回文数,就是从左往右和从右往左读都是一样的整数,eg.121->true
解题思路:遇到这种字符串匹配问题,最好的方法就是构建栈这样的数据结构,先将一半的字符串入栈,然后后半段利用栈pop出来的元素逐一比对。如果字符串size是奇数,要跳过中间项。
附上解题代码(C++):
/*******************************************************************************
Copyright © 2018-20xx Qiao Chuncheng, All Rights Reserved.
File name: 009[回文数].cpp
Author: Qiao Chuncheng
Version: v1.0
Date: 2018-04-07
*******************************************************************************/
class Solution {
public:
typedef struct{
char data[100]; //大小为100的栈
int top = 0;
}SeqStack;
bool isPalindrome(int x) {
if(x<0)
return false;
SeqStack s;
string str = std::to_string(x);//整数转化成字符串
int length,i;
length = str.size();
for(i=0;i<length/2;i++)//将一半的字符串入栈
s.data[s.top++] = str[i];
if(length%2)//如果是奇数个,跳过中间的
i++;
while(s.top)
{
char tmp = s.data[--s.top];
if(tmp!=str[i])//用栈中前面的数据对比字符串后面的数据
return false;
else
i++;
}
return true;
}
};