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

团体程序设计天梯赛L2-008 最长对称子串

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11

思路:由于数据不大只有1e3,直接可以用双指针暴力来找 ,从l=0,r=size-1开始,如果没找到就r--继续缩小范围找,如果找到了就记录答案然后l++,把r重置成size-1继续找。如此循环就能找到正确答案,这里可以可以做优化,如果r和l区间的长度没有ans大就可以跳出循环了。
 

#include<bits/stdc++.h>
using namespace std;
string s;// 检查区间 [l, r] 是否是回文
bool check(int l, int r) {for (int i = l; i <= (l + r) / 2; ++i) {if (s[i] != s[l + r - i]) return false;}return true;
}int main() {int ans = 1;getline(cin, s);int len = s.size();// 遍历每个可能的左端点 lfor (int l = 0; l < len; ++l) {// 从最大的右端点 r 开始检查for (int r = len - 1; r >= l; --r) {if (check(l, r)) {ans = max(ans, r - l + 1);break; // 找到当前 l 对应的最长回文,跳出内层循环}}}cout << ans;return 0;
}

相关文章:

  • 前端基础常见的算法
  • 如何实现一个“纯净”的空对象(无原型链属性)?
  • 光谱相机的成像方式
  • 在机器视觉检测中为何选择线阵工业相机?
  • RHCE 第一次作业
  • java 洛谷题单【算法2-1】前缀和、差分与离散化
  • 美国国土安全部终止资助,CVE漏洞数据库项目面临停摆危机
  • 【现代深度学习技术】循环神经网络03:语言模型和数据集
  • 记录jdk8->jdk17 遇到的坑和解决方案
  • 跨浏览器书签同步方案:WebDAV + Floccus插件实操指南
  • Redis 的不同数据结构分别适用于哪些微服务场景
  • vue3+vite 多个环境配置
  • 零浪费,最高效率:通往0%废品率的道路
  • 入门-C编程基础部分:6、常量
  • STM32启动流程详解
  • 【JVM优化】Minor GC的频率高的原因
  • element-ui自定义主题
  • C++23 中的可选扩展浮点类型:std::float{16|32|64|128}_t 和 std::bfloat16_t
  • ✅ MySQL 事务 MVCC ROLLBACK
  • Lua 第6部分 函数
  • 上海最出名的编程培训/南京百度seo排名优化
  • 网站建设拾金手指下拉/百度统计app
  • 如何做网站压力测试/长春网站排名提升
  • 河北智能网站建设/求购买链接
  • 百度网站怎么建设的/北京网站优化指导
  • 宝安做网站/怎么发外链