2003基于栈的回文字符序列判断(C++)
描述
回文序列是正反读均相同的字符序列,如“abba”和“abdba”均是回文,但是“good”不是回文。请设计一个算法判定给定的字符序列是否为回文。
输入
多组数据,每组数据有一行。每一行为一个长度不定的字符序列A。当A为“0”时,输入结束。
输出
对于每组数据输出一行。若字符序列A是回文序列,则输出“YES”,否则输出“NO”。
输入样例 1
abba
abdba
good
0
输出样例 1
YES YES NO
思路:
所谓回文字符串就是指把这个字符串倒过来还是和以前一样,比如“level”就是一个回文字符串~
采用两个栈,分别按正序和倒序存取字符串的每一位(注意string类型中,单独的每一个字符都是char类型,所以要用char类型的栈),都输入完毕以后再对其每个字符进行比较即可。
代码中,Empty函数判断当前的栈是否已空,Pop函数弹栈的同时,也返回弹出来的该字符。
代码如下:
#include<string>
#include<iostream>
#include<map>
#include<vector>
#include<cmath>
#include<set>
#include<algorithm>
using namespace std;
typedef struct Stack
{char s;struct Stack* next;
}*linkstack, SNode;
void Init(linkstack& s)
{s = NULL;
}
void Insert(linkstack& l,char x)
{linkstack p = new SNode;p->s = x;p->next = l;l = p;
}
bool Empty(linkstack s)
{if (s == NULL)return true;return false;
}
char Pop(linkstack& l)
{if (l == NULL)return 0;linkstack p;char e = l->s; p = l;l = l->next;delete p;return e;
}
void Compare(linkstack s1, linkstack s2)
{while (!Empty(s1)){if (Pop(s1) != Pop(s2)){cout << "NO" << endl;return;}}cout << "YES" << endl;
}
int main()
{string s;cin >> s;while (s != "0"){linkstack s1, s2;Init(s1);Init(s2);for (int i = 0; i < s.length(); i++){Insert(s1,s[i]);//string的每一个字符都是单独的char}for (int i = s.length() - 1; i >= 0; i--)Insert(s2, s[i]);Compare(s1, s2);cin >> s;}return 0;
}
2003基于栈的回文字符序列判断(C++)相关推荐
- 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
传送门 题目2 : 回文字符序列 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串ab ...
- 数据结构——用栈解决回文字符问题
回文 回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文.试写一个算法判定给定的字符序列是否为 ...
- 题目2 : 回文字符序列(区间DP)
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a& ...
- [动规] hihocoder 1149 回文字符序列
题目大意 原题链接,给定字符串求回文子序列数量.字符串长度 $len \leq 1000 $. 算法思路 题干比较简单,而且数据量不大,很容易想到使用递推,关键在于如何定义递推中间值和递推式.博主做题 ...
- 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。编写一个程序,使用栈判定给定的字符序列是否为回文。
内容: 回文是指正读反读均相同的字符序列,如"abba"和"abdba"均是回文,但"good"不是回文.编写一个程序,使用栈判定给定的字符 ...
- python找出字符串中的最长回文串子序列
回文串,即: nums = 'aba' print(nums == nums[::-1]) # True 反转该序列后和之前元素相等 这里我们需要找出给定字符串里的最长回文串,即: nums = 'a ...
- 回文字符(第一周技术分享)
第一篇博客就来写一下这次面试婷婷学姐问我的一个问题吧! 最开始我只会用最笨的办法把每位上的数字都写出来 再去比较首末是否相等去判断是否为回文数. #include <stdio.h> in ...
- C++ 栈实现回文数判断
C++ 栈实现回文数判断 #include<iostream> #include<string> using namespace std; class Point{char d ...
- C语言_回文字符串的判断
C语言_回文字符串的判断 程序目的 键盘任意输入一字符串,判断其是否会回文串. 设计思路 由于C语言中,字符串保存与char类型数组中,并且数组为随机存取结构.因此,可以设置前后标记a,b.参数a从0 ...
最新文章
- I need to follow my heart.
- AVAssetExportSession导出MP4视频失败
- HASHSET不能预留容量问题
- wxWidgets:实时传输时间RTTI
- SAP Spartacus的User明细如何通过ngrx-store-devtools被解析出来
- 【开源项目】基于FFmpeg的PCM数据编码为AAC
- 决策树分类算法matlab,matlab实现的C45分类决策树算法
- linux mysql 保护_linux – 在Puppet中,我如何保护密码变量(在这种情况下是MySQL密码)?...
- 嵌入式linux学习笔记--linux的消息队列的坑
- python画椭圆形_如何绘制Python中的半椭圆?
- 推挽电源的基本工作原理、磁通不平衡问题及其解决方法
- 【opencv 450 Image Processing】Image Moments 图像矩
- 炒币碰到熊市的应对方法,炒币者的八大口诀
- Android 底层知识拾零,字节跳动Android高级工程师
- ureport 显示html,Ureport2报表使用问题及注意事项汇总
- [bzoj2150] 部落战争 二分图
- MaxCompute(ODPS)实现笛卡尔积
- android 开发资料汇总
- 【微信易信公众平台开发】开启开发者模式
- 学习python不知不觉一个月了
热门文章
- antd 能自适应吗_Antd表格滚动 宽度自适应 不换行的实例
- python输入多个数字 找出只出现一个的数字_在python数组中找到接近给定数字的多个值...
- Linux的useradd
- Python | 多种编码文件(中文)乱码问题解决
- JavaScript学习系列之执行上下文与变量对象篇
- echart模块化单文件引入
- System.Int32是个啥?
- Flutter SliverAnimatedOpacity 透明渐变动画效果
- React基础篇(二)之点击button修改属性值
- 精通Android自定义View(十六)invalidate方法和requestLayout方法