用栈实现回文,代码如下
include
include
include // 引入栈的头文件
using namespace std;
// 函数用于检查字符串是否是回文
bool isPalindrome(const string& s) {
stack
// 将字符串中的字符推入栈中
for (char c : s) {
charStack.push(c);
}
// 再次检查字符串的每个字符与栈顶的字符是否相等
for (char c : s) {
if (c != charStack.top()) {
return false; // 如果不相等,则不是回文
}
charStack.pop(); // 弹出栈顶字符
}
return true; // 如果所有字符都匹配,则是回文
}
int main() {
int length;
cin >> length; // 读取字符串长度
cin.ignore(); // 清除输入缓冲区中的换行符
string inputString;
getline(cin, inputString); // 一次读取整个字符串
// 检查输入字符串的长度是否符合要求
if (inputString.length() != length) {
cout << "输入长度不匹配" << endl;
return 0;
}
// 检查是否有空格
if (inputString.find(' ') != string::npos) {
cout << "入栈不成功" << endl;
return 0; // 如果有空格,程序结束
}
// 判断最终字符串是否为回文
if (isPalindrome(inputString)) {
cout << "此字符串是回文串" << endl;
}
else {
cout << "此字符串不是回文串" << endl;
}
return 0;
}