c++利用栈判断字符串是否为回文串
以下是使用栈判断字符串是否为回文串的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 著作权归作者所有。请勿转载和采集!