Leetcode 09 -- 回文数

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

猜你喜欢

转载自blog.csdn.net/u010281829/article/details/80059852