懒猫老师-数据结构-(1)用栈判断一个字符串是否为回文串
2020-07-19 22:19
92 查看
文章目录
本文提供测试数据哦~
运行时请将数据粘贴到输入框中。
题目要求
代码实现
#include <iostream> #include <string> using namespace std; const int MAX_SIZE = 100; // 定义栈的最大长度 const int STR_LENGTH = 256; // 定义字符串的最大长度 class Stack { private: int size; // 栈的实际大小 int top; // 栈顶 char* data; // 指向数组的指针 public: /* 无参构造函数 */ Stack() { size = MAX_SIZE; top = -1; // 表示是空栈 data = new char[MAX_SIZE]; // (申请动态内存) 创建MAX_SIZE大小的字符数组, 将其地址赋给data变量 } /* 有参构造函数 */ Stack(int size) { if (size < MAX_SIZE) { this->size = size; top = -1; data = new char[size]; // 根据指定的大小分配栈的内存空间 } else { cout << "输入值过大, 栈的容量最大为: " << MAX_SIZE << endl; this->size = MAX_SIZE; top = -1; data = new char[MAX_SIZE]; } } /* 析构函数 */ ~Stack() { delete[] data; // 内存回收 } /* 入栈 */ void push(char ch) { if (!isFull()) { top++; data[top] = ch; } else { cout << "栈满,入栈失败!" << endl; } } /* 出栈并返回栈顶元素 */ char pop() { if (!isEmpty()) { char ch = data[top]; top--; return ch; } else { cout << "空栈,出栈失败!" << endl; } } /* 获得栈项元素(不出栈) */ char getTop() { if (!isEmpty()) { return data[top]; } else { cout << "空栈, 获取栈顶元素失败" << endl; } } /* 判断栈是否为空 */ bool isEmpty() { if (top == -1) { return true; } else { return false; } } /* 判断栈是否已满 */ bool isFull() { if (top >= size - 1) { return true; } else { return false; } } /* 将设置栈为空 */ void setNull() { top = -1; } /* 判断字符串是否是回文 */ bool isPalindrome(string str) { for (int i = 0; i < str.length() / 2; i++) { push(str[i]); // 前一半字符入栈 } int a; if (str.length() % 2 == 0) { a = str.length() / 2; // 偶数从后一半字符开始比较 } else { a = str.length() / 2 + 1; // 奇数时跳过最中间一个数进行比较 } for (int i = a; i < str.length(); i++) { if (str[i] != pop()) { return false; } } return true; } }; int main() { Stack myStack; string str; cout << "请输入一行字符串" << endl; getline(cin, str); bool flag = myStack.isPalindrome(str); if (flag) { cout << "您输入的字符串是回文串" << endl; } else { cout << "您输入的字符串不是回文串" << endl; } return 0; } /*测试数据: abccba ABCBA 123 AAx xAA 321 123 AAx xAA 321 1233210 */
相关文章推荐
- 判断一个字符串(超过80个字符)是否是回文结构(正序和逆序相同)
- C++常考的上机题型:判断一个字符串是否为回文串(递归实现)
- 数据结构——算法之(005)(判断字符串是否是对称的即(回文字符串))
- 判断一个字符串是否是回文串
- 数据结构实验之串二:字符串匹配(查看一个字符串是否为另一个字符串的子串)
- 【数据结构】单链表—判断一个链表是否形成了环形结构 — 快慢指针
- Valid Palindrome 判断一个字符串是否是回文串
- 数组字符串系列之:判断一个输入字符串中的每个字符唯一,只能使用基本的数据结构
- 数据结构269:判断字符串是否为回文(即是否有中心对称关系)
- 面试题——判断一个字符串是否是回文串
- 判断一个字符串在至多删除k个字符后是否为回文串
- 判断一个字符串是否为回文串和镜像串(Palindromes)
- 判断一个字符串是否为回文,以及求一个字符串中最长回文串
- 判断是否能通过添加一个字母将字符串变为回文串
- 数据结构之栈与队列——判断字符串是否为回文(中心对称)
- 判断一个字符串是否全为数字
- 算法 判断一个字符串是否是数字字符串
- 汇编:汇编语言实现判断一个字符串是否是另一个字符串的字串
- 90. 1.不开辟用于交换数据的临时空间 2.字符串的逆序 3判断单链表中是否存在环
- 判断一个字符串是否另一字符串的子串