C++回文检查:使用栈判断字符串是否为回文

这篇文章将向您展示如何使用C++编写一个程序来检查一个字符串是否是回文。回文是指一个字符串在忽略空格和大小写的情况下,正序和倒序读取都相同的字符串,例如 'racecar' 或 'madam'。

我们将使用栈这种数据结构来实现这个目标。栈遵循**后进先出(LIFO)**的原则,非常适合用来反转字符串。

代码示例

以下是完整的C++代码:cpp#include #include #include using namespace std;

bool isPalindrome(string str) { stack charStack; // 创建一个字符栈

// 第一遍扫描,将每个字符压入栈    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;}

代码解释

  1. 引入头文件: - iostream: 用于输入和输出操作 (例如 cin, cout)。 - stack: 用于使用栈数据结构。 - string: 用于使用字符串。 - using namespace std;: 让我们可以使用标准命名空间中的元素,而无需每次都写 std::

  2. isPalindrome 函数: - 接受一个字符串作为参数。 - 创建一个字符类型的栈 charStack。 - 第一次遍历字符串: - 忽略空格。 - 将每个字符转换为小写,并将其压入栈中。 - 第二次遍历字符串: - 忽略空格。 - 从栈中弹出一个字符,并将其与当前字符(转换为小写)进行比较。 - 如果字符不匹配,则返回 false (不是回文)。 - 如果所有字符都匹配,则返回 true (是回文)。

  3. main 函数: - 从用户那里获取一个字符串。 - 调用 isPalindrome 函数来检查字符串是否是回文。 - 打印结果。

如何运行代码

  1. 将代码保存为 .cpp 文件 (例如 palindrome.cpp)。2. 使用 C++ 编译器编译代码 (例如 g++ palindrome.cpp -o palindrome)。3. 运行编译后的文件 (例如 ./palindrome)。

希望这篇文章能帮助您理解如何使用C++中的栈来检查回文!

C++回文检查:使用栈判断字符串是否为回文

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

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