21xrx.com
2024-11-05 17:32:30 Tuesday
登录
文章检索 我的文章 写文章
C++实现栈结构判断回文串
2023-06-28 00:44:16 深夜i     --     --
C++ Stack Palindrome Implementation Algorithm

在计算机编程领域中,栈是一种常见的数据结构,它的特点是后进先出,也就是说,最晚入栈的元素最先出栈。在字符串处理中,我们可以使用栈来判断一个字符串是否是回文串。回文串指的是正向和反向顺序读起来均相同的字符串。

在C++语言中,我们可以使用STL库中的stack来实现栈的操作。首先,我们需要将字符串逐个字符入栈,然后再依次出栈比较,如果每一个字符都相等,那么就是一个回文串。下面是一个示例代码:


#include <iostream>

#include <stack>

using namespace std;

bool isPalindrome(string s) {

  stack <char> stk;

  int len = s.length();

  for (int i=0; i<len; i++) {

    stk.push(s[i]);

  }

  for (int i=0; i<len; i++) {

    if (s[i] != stk.top())

      return false;

    

    stk.pop();

  }

  return true;

}

int main() {

  string s1 = "racecar";

  cout << s1 << " is " << (isPalindrome(s1) ? "" : "not ") << "a palindrome." << endl;

  

  string s2 = "hello";

  cout << s2 << " is " << (isPalindrome(s2) ? "" : "not ") << "a palindrome." << endl;

  

  return 0;

}

在这个示例代码中,我们首先定义了一个函数isPalindrome来判断一个字符串是否为回文串。该函数接收一个字符串作为参数,然后使用stack将字符串逐个字符入栈。接下来,我们使用一个for循环依次将栈中元素出栈,并与原字符串中的字符进行比较。如果有不相等的字符,那么就不是回文串,返回false。如果最终都比较完毕,没有不相等的字符,那么就是回文串,返回true。

在主函数中,我们测试了两个字符串s1和s2,其中s1是一个回文串,s2不是回文串。运行代码后,输出结果如下:


racecar is a palindrome.

hello is not a palindrome.

这说明我们的函数isPalindrome确实可以正确地判断一个字符串是否为回文串。

  
  

评论区

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