21xrx.com
2024-12-22 23:46:31 Sunday
登录
文章检索 我的文章 写文章
C++使用栈结构判断字符串是否为回文
2023-07-02 04:48:44 深夜i     --     --
C++ 栈结构 字符串 回文

回文字符串是指正反两个方向读都一样的字符串。例如,“level”、“racecar”、“deified”等都是回文字符串。判断一个字符串是否为回文字符串是编程中一个常见的问题。在C++语言中,使用栈结构可以方便地判断一个字符串是否为回文字符串。

栈是一种先进后出(LIFO)的数据结构,类似于叠盘子。C++中,使用STL中的stack容器可以方便地实现栈结构。具体来说,可以将字符串的每个字符依次入栈,然后再依次出栈,和字符串原本的顺序比较。如果依次出栈的字符和字符串原本的顺序完全相同,那么这个字符串就是回文字符串。

下面给出使用栈结构判断字符串是否为回文字符串的C++代码:


#include <iostream>

#include <stack>

using namespace std;

bool palindrome(string str) {

  stack<char> stk;

  for (char c : str) {

    stk.push(c);

  }

  for (char c : str) {

    if (c != stk.top())

      return false;

    

    stk.pop();

  }

  return true;

}

int main() {

  string s1 = "level";

  string s2 = "hello";

  cout << s1 << " is palindrome: " << palindrome(s1) << endl;

  cout << s2 << " is palindrome: " << palindrome(s2) << endl;

  return 0;

}

以上代码中,palindrome函数依次将字符串的每个字符入栈,然后再依次出栈,和字符串原本的顺序比较。如果依次出栈的字符和字符串原本的顺序完全相同,函数返回true,表示这个字符串是回文字符串。如果出栈的字符和字符串原本的顺序不同,函数返回false,表示这个字符串不是回文字符串。

在main函数中,我们使用了两个字符串进行测试。其中,s1是回文字符串,s2不是回文字符串。程序输出结果如下:


level is palindrome: 1

hello is palindrome: 0

从输出结果可以看出,我们的程序正确地判断了这两个字符串是否为回文字符串。

总的来说,使用栈结构判断字符串是否为回文字符串是一种简单而有效的方法。这个方法的时间复杂度为O(n),其中n为字符串的长度。因此,在实际编程中,如果需要判断一个字符串是否为回文字符串,我们可以使用这种方法来解决。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复