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

UVa 353 Pesky Palindromes

题目描述

回文palindrome\texttt{palindrome}palindrome)是指一个或多个字符组成的序列,从左向右读和从右向左读相同。例如,ZTOTMADAM是回文,但ADAM不是。

你的任务是:编写一个程序,读取一系列字符串,对于每个字符串,确定其中不同的回文子串的数量。

输入格式

输入文件包含多个字符串,每行一个,每个字符串最多808080个字符,从第111列开始。

输出格式

对于每个非空输入行,输出一行,格式如样例所示。

样例输入

boy adam madam tot

样例输出

The string 'boy' contains 3 palindromes. The string 'adam' contains 4 palindromes. The string 'madam' contains 5 palindromes. The string 'tot' contains 3 palindromes.

样例解释

  • boy中的333个不同回文子串:boy
  • adam中的444个不同回文子串:admada
  • madam中的555个不同回文子串:madadamadam
  • tot中的333个不同回文子串:totot

题目分析

问题的本质

这是一个回文子串枚举与去重问题。给定一个字符串,需要找出所有不同的回文子串。

回文的特点

回文有两种类型:

  • 奇长度回文:中心是一个字符,左右对称扩展
  • 偶长度回文:中心是两个相同字符,左右对称扩展

枚举策略

可以枚举每个可能的回文中心,向左右扩展,收集所有回文子串。时间复杂度O(n2)O(n^2)O(n2)n≤80n \leq 80n80,完全可行。

去重

使用set<string>自动去重,最后输出集合大小。

参考代码

// Pesky Palindromes// UVa ID: 353// Verdict: Accepted// Submission Date: 2016-06-27// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(){string line;while(cin>>line){set<string>palindromes;// 存储不同的回文子串// 枚举奇长度回文(中心为单个字符)for(inti=0;i<line.length();i++){intleft=i,right=i;// 向左右扩展直到不能构成回文while(left>=0&&right<line.length()&&line[left]==line[right]){palindromes.insert(line.substr(left,right-left+1));left--;right++;}}// 枚举偶长度回文(中心为两个字符之间的位置)for(inti=1;i<line.length();i++){intleft=i-1,right=i;while(left>=0&&right<line.length()&&line[left]==line[right]){palindromes.insert(line.substr(left,right-left+1));left--;right++;}}cout<<"The string '"<<line<<"' contains "<<palindromes.size()<<" palindromes."<<endl;}return0;}
http://www.rkmt.cn/news/1441755.html

相关文章:

  • 从零到一:手把手教你用Python复现fDSST目标跟踪算法(附完整代码与避坑指南)
  • 块Krylov求解器与H2矩阵优化:50倍加速的科学计算实践
  • Win11Debloat:让你的Windows系统重获新生的终极优化工具
  • 660美元打造视觉机器人:XLeRobot如何让YOLO驱动双臂精准抓取
  • Node多环境安装记录总结
  • 基于GreenPAK的纯硬件盐度传感器设计:从电导率原理到三档水质检测
  • UVa 356 Square Pegs And Round Holes
  • 3大核心模块深度解析:ok-ww自动化工具如何实现鸣潮游戏效率倍增
  • Apache Guacamole 远程桌面网关教程:浏览器打开家里的 Windows / Linux 主机
  • 基于W5500与Arduino的物联网股票监控系统:硬件实现与代码解析
  • 微信聊天记录如何真正属于你?探索WeChatMsg的数据自主实践指南
  • 2026 西安手表回收怎样避坑?真实案例教你挑选正规门店 - 薛定谔的梨花猫
  • Vue 项目实战《尚医通》,完成挂号预约业务,笔记19
  • 2026年湖北瓦楞纸箱定制厂商全景评测:孝感源头工厂如何破解包装成本与品控双重困局 - 优质企业观察收录
  • 用铅笔和铝箔自制低成本弯曲传感器:原理、制作与Arduino应用
  • 复盘近期行业事件,看懂 AI 发展新趋势
  • 为什么92%的医学动画团队还在用Blender重做Sora 2已生成的血管灌注序列?——神经外科AI动画组内部泄漏手册
  • 漳州 3 天 2 晚怎么玩?这份超全攻略收好,本地人都夸省心! - 资讯速览
  • 如何在Windows电脑上直接安装安卓应用?APK-Installer为你提供专业解决方案
  • MinIO 灾备方案
  • Forza Mods AIO终极指南:免费开源极限竞速修改工具快速上手
  • 如何快速获取蓝奏云直链:面向新手的完整解析指南
  • 不锈钢钢丝绳在电子防盗扣中的耐酸碱腐蚀技术改进
  • 落差超百米!庐山三叠泉为何能成为瀑布中的经典
  • 语音转文字app推荐实测,筛选5款高准确率实用工具
  • 广州2026二手房翻新公司排行:精准方案、精细交付、精心服务 - 资讯速览
  • 开源贡献指南——从提交PR到维护项目
  • 2026年 隔绝式压缩氧气自救器及配件厂家推荐榜:安全阀/储气袋/减压器/开关等核心组件与品牌深度解析 - 企业推荐官【官方】
  • 【仅限首批200家内测机构】Sora 2虚拟主播视频API密钥申请通道即将关闭:3类合规红线与5项资质预检清单
  • 龙岗电商财税4家公司专业度与服务能力对比 - 奔跑123