九月二十二日

发布时间 2023-09-22 09:19:15作者: 财神给你送元宝

将数据结构学了一下

回文数用栈和双向链表的方式都实现了一下

#include<iostream>
using namespace std;

typedef struct
{
    char data[101];
    int top;
}SqStack;

void InitStack(SqStack &S)
{
    S.top=-1;
}

void Push(SqStack &S,char e)
{
    S.data[++S.top]=e;
}

void Pop(SqStack &S,char &e)
{
    e=S.data[S.top--];
}


int main()
{
    int n;
    cin>>n;
    char a[101];
    char b[101];

    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        b[i]=a[i];
    }

    SqStack S;
    InitStack(S);
    
    for(int i=0;i<n;i++)
    {

            Push(S,a[i]);

    }
    
    char e;
    
    for(int i=0;i<n;i++)
    {

            Pop(S,e);
            a[i]=e;

    }

    int f=0;
    
    for(int i=0;i<n;i++)
    {
        if(a[i]!=b[i])
            f++;
    }

    if(f!=0)
    {
        cout<<"此字符串不是回文串";
    }

    if(f==0)
    {
        cout<<"此字符串是回文串";
    }


    return 0;
}

  

class Solution {
public:
    string String(string inputString) 
    {
         int left = 0;
         int right = inputString.length() - 1;
         while (left < right)
        {
            swap(inputString[left], inputString[right]);
            left++;
            right--;
        }
         return inputString;
    }


    bool isPalindrome(int x) {

        std::string a = std::to_string(x);
        std::string b = a;
        b=String(a);

        if(a==b)
        {
            return true;
        }
        else
        {
            return false;
        }
        
    }
};