Skip to content

Latest commit

 

History

History
74 lines (63 loc) · 1.41 KB

3.回文串.md

File metadata and controls

74 lines (63 loc) · 1.41 KB

#3.回文串

##题目描述 编写一函数palindrome(char* s)用于判断任一字符串是否是回文(即顺序读与反序读一样,例如“ABCBA”、“121”等)。

##输入 输入文件有多组测试数据。第一行有一个整数n,它是测试数据组数,(n≤10)。接下来有n行,每行至多有m个字符,(m≤1000)。但是,每一行末尾处的换行字符不能作为这一行的内容。

##输出 对每一组测试数据,在一行上输出你的判断结果。若是回文串,则输出“YES!”,否则输出“NO!”。

(主函数调用判别函数并输出判别结果)。

##样例输入

3
ABCBA
121
ABCA

##样例输出

YES!
YES!
NO!

##源代码(C++)

//Programmed by Daphne 2015.7.2
//E-mail: Daphne.Chang@foxmail.com
#include <iostream>
#include <string>
#include <stack>
using namespace std;

int is_palindrome(const string palin)
{
    stack<char> s;
    for (int i = 0;i < palin.size();i++)
    {
        s.push(palin[i]);
    }
    int k = 0;
    while (s.size() > palin.size()/2)
    {
        char c = s.top();
        s.pop();
        if (c != palin[k++])
        {
            cout << "NO!" << endl;
            return -1;
        }
    }
    cout << "YES!" << endl;
    return 0;
}

int main()
{
    string str;
    int k,n;
    
    cin>>n;
    for(k=1;k<=n;k++)
    {
        cin >> str; 
        is_palindrome(str);
    }
    return 0;
}