题目链接如下: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; } };