C++回文检查:使用栈判断字符串是否为回文
C++回文检查:使用栈判断字符串是否为回文
这篇文章将向您展示如何使用C++编写一个程序来检查一个字符串是否是回文。回文是指一个字符串在忽略空格和大小写的情况下,正序和倒序读取都相同的字符串,例如 'racecar' 或 'madam'。
我们将使用栈这种数据结构来实现这个目标。栈遵循**后进先出(LIFO)**的原则,非常适合用来反转字符串。
代码示例
以下是完整的C++代码:cpp#include
bool isPalindrome(string str) { stack
// 第一遍扫描,将每个字符压入栈 for (char c : str) { if (c != ' ') { // 过滤空格 charStack.push(tolower(c)); // 将字符转换为小写并压入栈 } }
// 第二遍扫描,将原串中的每一个字符与从栈中弹出的字符作比较 for (char c : str) { if (c != ' ') { // 过滤空格 char stackTop = charStack.top(); // 获取栈顶字符 charStack.pop(); // 弹出栈顶字符
if (tolower(c) != stackTop) { // 将字符转换为小写并与栈顶字符比较 return false; // 若字符不同,则该串不是回文 } } }
return true; // 若栈为空且每一对比较的字符都相同,则该串是回文}
int main() { string str; cout << '请输入一个字符串: '; getline(cin, str);
if (isPalindrome(str)) { cout << '是回文' << endl; } else { cout << '不是回文' << endl; }
return 0;}
代码解释
-
引入头文件: -
iostream: 用于输入和输出操作 (例如cin,cout)。 -stack: 用于使用栈数据结构。 -string: 用于使用字符串。 -using namespace std;: 让我们可以使用标准命名空间中的元素,而无需每次都写std::。 -
isPalindrome函数: - 接受一个字符串作为参数。 - 创建一个字符类型的栈charStack。 - 第一次遍历字符串: - 忽略空格。 - 将每个字符转换为小写,并将其压入栈中。 - 第二次遍历字符串: - 忽略空格。 - 从栈中弹出一个字符,并将其与当前字符(转换为小写)进行比较。 - 如果字符不匹配,则返回false(不是回文)。 - 如果所有字符都匹配,则返回true(是回文)。 -
main函数: - 从用户那里获取一个字符串。 - 调用isPalindrome函数来检查字符串是否是回文。 - 打印结果。
如何运行代码
- 将代码保存为
.cpp文件 (例如palindrome.cpp)。2. 使用 C++ 编译器编译代码 (例如g++ palindrome.cpp -o palindrome)。3. 运行编译后的文件 (例如./palindrome)。
希望这篇文章能帮助您理解如何使用C++中的栈来检查回文!
原文地址: https://www.cveoy.top/t/topic/buSD 著作权归作者所有。请勿转载和采集!