程序员世界大冒险d40

用栈实现回文,代码如下

include

include

include // 引入栈的头文件

using namespace std;

// 函数用于检查字符串是否是回文
bool isPalindrome(const string& s) {
stack charStack; // 定义一个栈来存储字符

// 将字符串中的字符推入栈中  
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;  

}

posted on 2024-10-18 23:59  睡觉时候不困  阅读(4)  评论(0编辑  收藏  举报