#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: [email protected]
#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;
}