常见算法题:判断表达式是否是回文
来源:互联网 发布:淘宝客新增导购推广 编辑:程序博客网 时间:2024/05/16 07:41
题目:设计一个算法,判断用户输入的表达式中是否是回文(回文即左右对称的字符串)。
思路:这道题与判断表达式括号是否匹配类似,可使用顺序栈来解决,区别是回文要求每个字符都要求匹配,因此将字符串全部入栈,再全部出栈,将最后一个字符与第一个字符比较是否相同,依次比较,若全部相同则为回文。
代码:
#include<iostream>#include<string>using namespace std;#define MaxSize 20//字符串栈class Stack{ char *data; int top;public: Stack(); ~Stack(); bool IsEmpty(); bool Push(char e); bool Pop(char& e);};Stack::Stack(){ data = new char[MaxSize]; top = -1;}Stack::~Stack(){ delete [] data;}bool Stack::IsEmpty(){ return (top == -1);}bool Stack::Push(char e){ if(top == MaxSize-1) return false; //栈满 top++; data[top] = e; return true;}bool Stack::Pop(char& e){ if(top == -1) return false; //栈空 e = data[top]; top--; return true;}//判断回文bool IsPalindrome(char str[],int n){ int i=0;char e; Stack st; while(i<n) { st.Push(str[i]); i++; } i=0; while(i<n) { st.Pop(e); if(str[i]!=e) return false; i++; } return true;}void main(){ cout<<"请输入表达式:"<<endl; char str[MaxSize]; cin>>str; int n = strlen(str); if(IsPalindrome(str,n)) cout<<"表达式"<<str<<"是回文"<<endl; else cout<<"表达式"<<str<<"不是回文"<<endl;}
测试数据1:qwerewq
测试结果1:
测试数据2:qwertyu
测试结果2:
3 0
- 常见算法题:判断表达式是否是回文
- 算法:判断字符串是否是回文的
- 判断是否是回文
- 常见算法题:判断表达式括号是否匹配
- 笔试题判断字符串是否是回文
- 每天一道算法题1 判断字符串是否是回文字符串或者是否含有回文字符子串
- 设计一个算法判断一个字符串是否是回文
- 判断是否是回文数
- 判断数字是否是回文
- 判断字符串是否是回文
- 判断是否是回文数
- 判断是否是回文数字
- 判断字符串是否是回文
- 判断名字是否是回文
- 判断字符串是否是回文
- 判断链表是是否是回文
- 判断是否包含回文、判断是否是回文、求最长回文、得到最长回文的长度
- 算法是代码的灵魂-判断一个字符串是否是回文字符串
- 联想M7650DF打印机加墨粉
- 改变源于坚持
- 【算法】最长回文子串
- 跟择善老师系统学习JAVA(一)
- SQL Server 查询处理中的各个阶段(SQL执行顺序)
- 常见算法题:判断表达式是否是回文
- 十三周——输入输出流——阅读
- C语言(1) HelloWord 与JAVA对比
- week15---6月9日
- 用户界面View(二)
- microsoft silverlight
- STL源码分析之大顶堆
- B树、B-树、B+树、B*树
- leetcode[203]:Remove Linked List Elements