以下是使用栈判断字符串是否为回文串的C++代码:

#include <iostream>
#include <stack>
#include <string>

using namespace std;

bool isPalindrome(string s) {
    stack<char> stk;
    
    // 将字符串的一半字符入栈
    int mid = s.length() / 2;
    for (int i = 0; i < mid; i++) {
        stk.push(s[i]);
    }
    
    // 根据字符串长度的奇偶性确定比较的起始位置
    int start = mid + (s.length() % 2 == 0 ? 0 : 1);
    
    // 依次比较入栈的字符与字符串的后半部分字符是否相等
    for (int i = start; i < s.length(); i++) {
        if (stk.empty() || stk.top() != s[i]) {
            return false;
        }
        stk.pop();
    }
    
    return true;
}

int main() {
    string s;
    cout << "输入一个字符串:";
    cin >> s;
    
    bool result = isPalindrome(s);
    
    if (result) {
        cout << "是回文串" << endl;
    } else {
        cout << "不是回文串" << endl;
    }
    
    return 0;
}

该代码使用了一个栈来判断字符串是否为回文串。首先,将字符串的一半字符入栈。然后,根据字符串长度的奇偶性确定比较的起始位置。最后,依次比较入栈的字符与字符串的后半部分字符是否相等。如果栈为空且比较过程中没有发现不相等的字符,则字符串是回文串


原文地址: https://www.cveoy.top/t/topic/h6sP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录