当前位置: 首页 > news >正文

解密回文--栈

xyzyx ”是一个回文字符串,所谓回文字符
串就是指正读反读均相同的字符序列,如“席主席”、“记书记”、“ aha ”和“ ahaha ”均是回
文,但“ ahah ”不是回文。通过栈这个数据结构我们将很容易判断一个字符串是否为回文。
首先我们需要读取这行字符串,并求出这个字符串的长度。

解析

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;int main()
{char a[101], s[101];int i, len, mid, next, top;cin >> a; //读入一行字符串len = strlen(a); //求字符串的长度mid = len / 2 - 1; //求字符串的中点//这里中点的意思是中间对称的点之前的位置top = 0;//栈的初始化//将mid前的字符依次入栈for (i = 0; i <= mid; i++)s[++top] = a[i];//判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标 if (len % 2 == 0)next = mid + 1;elsenext = mid + 2;//开始匹配for (i = next; i <= len - 1; i++){if (a[i] != s[top])break;top--;}//如果top的值为0,则说明栈内所有的字符都被一一匹配了if (top == 0)printf("YES");elseprintf("NO");getchar(); getchar();return 0;
}//可以输入以下数据进行验证。
//ahaha
//运行结果是:
//YES

补充

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#include<string.h>
using namespace std;int main()
{string a;char s[101];//string字符串必须直接插入,不能直接使用string赋值,所以改用charint top = 0, next, mid, len;cin >> a;//len = strlen(a); err//char类型才可以//c++用lengthlen = a.length();mid = len / 2 - 1;for (int i = 0; i <= mid; i++){s[++top] = a[i];//使用下标1作为 起始,目的就是为了后面top为0时直接判定为回文输出结果}if (len % 2 == 0)next = mid + 1;elsenext = mid + 2;for (int i = next; i <= len - 1; i++)//len-1而不是len是因为i本身也算一次.{if (a[i] != s[top])break;top--;}//算法挺巧妙的,奇数的时候那么中间的数是不加入比对的。//而偶数的时候,就会让中间的数和下一位数进行比对如此反复,//如111111//3与4,5与2,6与1,也就是一个不对都是错的!if (top == 0)cout << "YES";elsecout << "NO";return 0;
}

http://www.lryc.cn/news/153392.html

相关文章:

  • Mysql主从服务安装配置
  • 双向BFS
  • 数据艺术:精通数据可视化的关键步骤
  • MySQL 是如何实现事务的四大特性的?
  • python实现zscore归一化和minmax标准化
  • 架构师成长之路Redis第三篇|Redis key过期清除策略
  • C++智能指针之weak_ptr(保姆级教学)
  • ElementUI浅尝辄止18:Avatar 头像
  • 1688API技术解析,实现按图搜索1688商品(拍立淘)
  • 【面试经典150题】买卖股票的最佳时机
  • selenium可以编写自动化测试脚本吗?
  • CXL.mem M2S Message 释义
  • 使用boost::geometry::union_ 合并边界(内、外):方案二
  • ICCV 2023 | 小鹏汽车纽约石溪:局部上下文感知主动域自适应LADA
  • stable diffusion实践操作-黑白稿线稿上色
  • Python学习教程:集合操作的详细教程
  • 球球的排列
  • 1783_CMD启动MATLAB同时执行一个脚本
  • C语言中内存分配的几种方式
  • 组相联cache如何快速实现cache line eviction并使用PMU events验证
  • 【Stable Diffusion安装】支持python3.11 window版
  • Anycloud37D平台移植wirelesstools
  • 海康机器人工业相机 Win10+Qt+Cmake 开发环境搭建
  • 使用MDK5的一些偏僻使用方法和谋个功能的作用
  • 【实战】十一、看板页面及任务组页面开发(六) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十八)
  • 在 Amazon 搭建无代码可视化的数据分析和建模平台
  • Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)
  • elasticSearch+kibana+logstash+filebeat集群改成https认证
  • GPT带我学-设计模式-迭代器模式
  • 数学建模--层次分析法(AHP)的Python实现