当前位置: 首页 > 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.jsqmd.com/news/930421/

相关文章:

  • 3个关键步骤:彻底解决微信聊天记录永久保存难题
  • 还在为无法调整的窗口尺寸烦恼吗?WindowResizer 帮你轻松掌控任意窗口大小
  • 2026广州白云区搬家公司硬核横评:高口碑高性价比靠谱品牌全维度实测 - gzdjxd
  • 块Krylov求解器与H2矩阵优化:50倍加速的科学计算实践
  • 开源资源提取神器QuickBMS完全指南:从游戏解包到文件格式解析的专业技巧
  • 660美元打造视觉机器人:XLeRobot如何让YOLO驱动双臂精准抓取
  • Win11Debloat:让你的Windows系统重获新生的终极优化工具
  • 2026 精选【CISP】证书全面讲解(含刷题要点避坑)_CISP 真题剖析 CISP 认证详解!
  • 如何快速解锁百度网盘Mac版SVIP功能:完整使用指南
  • 如何用GriddyCode打造你的专属代码编辑器:终极定制化指南
  • 如何快速掌握世界最强将棋AI:YaneuraOu完全使用指南
  • B2B 出海企业 VI 设计公司哪家靠谱?关键看它能不能把“中国能力”翻译成“全球信任” - 2026品牌推荐官
  • 2026年孝感包装工厂源头直供实力盘点:武汉纸箱定做怎么找靠谱厂家? - 优质企业观察收录
  • 一键清理Windows 11:Win11Debloat让系统焕发新生
  • Node多环境安装记录总结
  • 技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
  • Windows APK安装器:无需模拟器,在电脑上直接运行安卓应用的终极指南
  • 重新定义游戏串流体验:Sunshine开源服务器的技术革命
  • 从零到一:用YOLOv8打造你的专属扑克牌识别器(附Python+PySide6完整源码)
  • 如何用AI自然语言编程重构Godot游戏开发工作流
  • TV Bro电视浏览器:如何在智能电视上实现高效网页浏览的终极指南
  • 基于GreenPAK的纯硬件盐度传感器设计:从电导率原理到三档水质检测
  • UVa 356 Square Pegs And Round Holes
  • Ultimate SD Upscale深度解析:如何在有限显存下实现专业级AI图像放大
  • 3大核心模块深度解析:ok-ww自动化工具如何实现鸣潮游戏效率倍增
  • YOLOv8模型选型指南:从yolov8n.pt到yolov8m.pt,如何根据你的项目需求权衡速度与精度?
  • Apache Guacamole 远程桌面网关教程:浏览器打开家里的 Windows / Linux 主机
  • AI视频解析工具实测:如何一键提取视频脚本、字幕和提示词?
  • 数据库高并发技术:核心原理与工程实践
  • 3步搞定跨平台歌单迁移:LX Music桌面版智能神器全解析