NOJ1100最长回文子串——经典算法

西工大NOJ答案(已找出所有错误并补充题,每道题都可找到) 已找出现存网络上各种版本的所有错误,每段代码都运行过,并修改成功AC了,而且补充题库,所有题都可以搜出来了。 立即下载

最长回文子串

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:492            测试通过:174

描述

输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样(在回文串的首部和尾部不要输出多余字符)。

输入

输入字符串长度不超过5000,且占据单独的一行。

输出

输出最长的回文串,如果有多个,输出起始位置最靠左的。

样例输入

Confuciuss say: Madam,I?m Adam.

样例输出

Madam, I?m Adam

题目来源

刘汝佳《算法竞赛入门经典》


//最长回文子串
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define MAXN 5010

char buf[MAXN];
char str[MAXN];
int p[MAXN];

int main()
{
	int e_num = 0, max = 0;
	int s, t;
	gets(buf);
	for(int i=0;i<strlen(buf);i++)
	{
		if(isalpha(buf[i]))
		{
			p[e_num] = i;
			str[e_num++] = toupper(buf[i]);
		}
	}
	for(int i=0;i<e_num;i++)
	{
		for(int j=0;i-j>=0&&i+j<e_num;j++)
		{
			if(str[i-j] != str[i+j]) break;
			if(j*2+1 > max)
			{
				max = j*2+1;
				s = p[i-j];
				t = p[i+j];
			}
		}
		for(int j=0;i-j>=0&&i+j+1<e_num;j++)
		{
			if(str[i-j] != str[i+j+1]) break;
			if(j*2+2 > max)
			{
				max = j*2+2;
				s = p[i-j];
				t = p[i+j+1];
			}
		}
	}
	for(int i=s;i<=t;i++)
		printf("%c",buf[i]);
	printf("\n");

	return 0;
}


【ACM比赛模板积累ing】O(n)回文子串(Manacher)算法 ACM比赛模板积累,Manacher算法,时间复杂度O(n),可适应于求输入串的最长回文子串 立即下载

相关推荐

寻找字符串的最长回文序列, C语言实现

此代码为实现寻找一个长字符串的最大回文序列,回文指两边对称的字符串,分为字符数为奇数和偶数两种情况。

HDU 3068 最长回文(Manacher算法)

Time Limit:2000MS Memory Limit:32768KBDescription 给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等Input 输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c…y,z组成的字符串S 两组case之间由空行隔开(该空行不

2cm的专栏 358

从模组到集装箱:手把手拆解一个储能BMS的软硬件架构设计与通信组网

本文深入解析储能BMS的软硬件架构设计与通信组网,从电芯采样到系统集成的全链条技术实现。详细介绍了三级硬件架构(AFE、CMU、BMU)的设计要点,以及软件分层实现中的驱动层、应用层核心算法和通信协议栈。通过实战案例分享CAN网络搭建、调试工具链和系统验证测试经验,为储能系统开发提供实用指导。

weixin_30752699的博客 462

最长回文子串的长度 南邮NOJ 1968

最长回文子串的长度 时间限制(普通/Java):1000 MS/3000 MS 运行内存限制 : 65536 KByte 总提交 : 322 测试通过 : 62 题目描述 输入一个字符串,求出其中最大回文子串的长度。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy...

weixin_30443895的博客 195

移动端抓包实战指南:从HTTPS解密到QUIC协议与证书绑定破解

HTTPS作为保障网络通信安全的核心协议,其工作原理基于TLS/SSL加密与证书信任链验证。在移动应用开发与测试中,抓包是调试接口、分析性能、排查问题的关键技术手段。然而,随着移动端安全性的提升,传统的代理抓包方法常因证书绑定、HTTP/3/QUIC协议等挑战而失效。这要求开发者掌握分层诊断思维,协同使用代理工具、协议分析工具及底层流量捕获工具。例如,面对证书绑定导致的流量不可见,需借助Wireshark进行协议层分析;针对基于UDP的QUIC协议,则需使用支持该协议的抓包工具或临时禁用特性。本文聚焦移动端

weixin_27722377的博客 296

【同花顺公式编辑教程】第3章 获取数据

学习同花顺公式编辑器,其提供的数据有量价数据以及财务数据。在本章中,我们讲解了编辑器执行代码的原理,并给出了可调用数据的汇总表。

LiaoYi2016218的博客 1万+

C语言 最长回文子串

描述:输入一个字符串,求其中最长回文子串。子串的含义是:在字符串中连续出现得字符串片段。回文的含义是, 正着看和倒着看是相同的,如abba何abbebba。在判断时要求忽略所有的标点和空格,且忽略大小写。但输出时按原样输出 (首尾不要输出多余的字符串).输入字符串长度大于等于1小于等于5000.且单独占一行。 输入: 输入一行字符串。 输出: 输出所要求的回文子串。 样例输入: L...

rain699的博客 4937

论文分享 - OctoMap八叉树建图原理

论文:OctoMap:An Efficient Probabilistic 3D Mapping Framework Based on Octrees。

一只废佐_的博客 2539

Leetcode——回文子串 / 最长回文子串 / 最长回文子序列

1. 题目 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s = “cbbd” 输出:“bb” 示例 3: 输入:s = “a” 输出:“a” 示例 4: 输入:s = “ac” 输出:“a” 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组成 2. 题解 解法 1:暴力法 class Solution { pu

Yawn 505

蛋白质组学实战指南 | (八)从数据到洞见:差异蛋白筛选与功能解析全流程

本文系统阐述了蛋白质组学数据分析中,从原始数据质控到差异蛋白筛选与功能解析的全流程。重点介绍了数据质量评估、差异蛋白筛选的统计方法(包括多重检验校正)、功能注释与富集分析,以及蛋白互作网络构建与关键节点识别。最后,为如何将生物信息学洞见转化为实验验证提供了清晰的规划思路,助力研究者完成从数据到生物学知识的闭环。

weixin_29250573的博客 371

32、机械臂数字孪生模型创建指南

本文介绍了如何在MATLAB Simscape中为一款3自由度(DOF)微型机械臂创建数字孪生模型。内容涵盖硬件参数测量、Simulink模型搭建流程,包括初始条件设置、基座与上部主体构建、上臂结构设计等关键步骤。通过使用Solid、Revolute Joint和Rigid Transform等模块,实现机械臂多体系统建模,并支持后续运动仿真与物理系统的对比诊断。读者可依据指南逐步完成模型构建,相关资源可通过MATLAB File Exchange或指定网站获取。

qsc9012345的博客 214

Manacher (马拉车算法)

Manacher (马拉车算法) 的介绍 中心扩展算法 —— 优化 —— 马拉车 P3805 模板manacher 算法 P1659 [国家集训队]拉拉队排练 P4555 [国家集训队]最长双回文串

日常记录,挨打要立正! 2万+

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1393

最长回文子串 南邮NOJ 1100

最长回文子串 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 689            测试通过 : 229  题目描述 输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略

Yesterday You Said Tomorrow. 476

勇攀数字高峰

摘要:该题目要求在数字地形图中寻找从最低点到最高点的所有严格递增登山路径。采用DFS深度优先搜索结合回溯算法,通过标记已访问位置并检查高度差限制(0<diff≤maxDiff)来遍历所有可能路径。算法首先确定起点(最低点)和终点(最高点),然后进行DFS搜索,每步移动需满足四个方向的合法移动且高度严格递增。最终输出符合条件的路径总数。提供了C++、Java和Python三种实现方案。

面试高手的博客 621

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Manacher算法(马拉车算法)

Manacher算法,又叫“马拉车”算法,可以在时间复杂度为O(n)的情况下求解一个字符串的最长回文子串长度的问题。

诸君拔剑吧. 4280

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode第五题:最长回文子串(Java)

题目:最长回文子串 示例: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 这道题用到许多编程思想,中心扩展、动态规划、著名的manacher(马拉车),是前面题所没用用过的方法。 方法一:暴力循环 找到所有子串,判定是否是回文串,保存最长长度的回文串。 public static String longestPalindrome(String s) { //存储最长子串 String str = "";

巨坑的菜比的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

彻底搞懂马拉车(Manacher)

Manacher算法,又叫“马拉车”,它可以在时间复杂度和空间复杂度都是O(n)的情况下,求出一个字符串的最长回文串长度。 回文串的基本解法        以每一个点为中心对称点,每次保留最长回文子串的长度,最后得到的就是最长回文子串的长度,但是这样的时间复杂度为O(n^2),并且奇偶回文串是不一样的,比如“aba”的对称中心为...

Darge. 2万+

题解:最长回文子串(4种解法)

题目:最长回文子串 难度:中等 一、描述 二、题解: 2.1 暴力法(O(N^3)) 解释: 循环三次。第一次起始点循环;第二次终止点循环(从最右边开始到起始点为止);第三次起始点开始终止点结束,当两个值不相等时候跳出循环。只有完整进行第三次循环才满足回文串的条件。 class Solution: def longestPalindrome(self, s: str) -> str: max_ = 1 max_str = s[0] length

v-space的博客 2万+

poj3947最长回文串

manacher 算法学习http://www.cnblogs.com/pangblog/archive/2013/08/16/3263231.htmlhttp://poj.org/problem?id=3974 模板#include <iostream> #include <cstring> #include <cstdio> #include <cmath> using namespace

skymeteorite 838

题目:最长回文子串(C++)

看到这个题第一反应是做过啊,然后就开始写,等写完一测。emmmmm,原来是最长回文子串不是最长回文子序列,但是写都写了,我就把代码稍微修改了一下让适应于该题目,代码如下: static const auto io_speed_up = []() { std::ios::sync_with_stdio(false); cin.tie(nullptr); ...

weixin_30764137的博客 202

C 最长回文字串问题

以下问题的解决思路来自于刘汝佳先生的《算法竞赛入门经典》。 问题描述: 输入行数据,在其中找出最长的回文数(正着倒着是一样的) 这种方法属于中心扩展法,就是以每个字符为中心向左右分别扩展,得到最长的回文字符。 样例输入:Confuciuss say : Madam,I'm Adam. 样例输出:Madam,I'm Adam #include #include #includ

雅文的专栏 603

NOJ37 回文字符串---整理一下都是各种回文类型啊,

点击打开链接 注意要是求的字符串和逆串的公共子序列,和公共子串分开了哦。 思路分析: 1.判断字符串前后俩个字符是否相同,如果相同,则删去这俩字符,判断剩余的字符,不需要添加字符。 2.如果不相同,则添加最少的字符的数量 = min((在字符串前添加和末尾一样的字符,删除末尾字符,判断其余字符串),(在字符串后添加和前边一样的字符,删除 前边的字符, 判断其余字符串) ) + 1 ;很容

meme_y的专栏 617

Manache(马拉车)算法基本原理与python实现

马拉车算法:在元素向两边扩散进行查找的基本思路不变的情况下,充分利用回文串的对称性,大幅减少算法时间的一种算法(时间复杂度o(n))。 字符的处理 在每个字符和字符串开头与结尾都添加上特殊符号“#”。然后在两端分别加入一个全新的符号,这样可以省去边界的判断。 如”aba“可以改写成”@#a#b#a#$“。 几个重要变量的初始化 建立列表p,并给其添加和字符串等数量的0,之后会用来记录每个元素向两边扩散所能达到的最大回文长度。 将max_right,max_mid_index初始...

meng_xin_true的博客 1389

manacher算法 (O(n)求最长回文子串)

我们可以用O(n^2)暴力求解最长回文子串。 之所以是这个复杂度,是因为我们对每个字符比较其两边元素是否相等时,我们都是从它最旁边的一个开始迭代的。 但如果我们能以该字符为中心,其附近的某一段子串已为回文,在此基础上比较更远的元素,那么就有可能降低这个复杂度了。

Stephen Wong的专栏 2041

经典算法——最长回文子串

一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串

lv51920的博客 510
上一篇: NOJ1099移动小球——经典的想法
下一篇: NOJ1101Trees on the Level——二叉树+写法
tcherry
博客等级 码龄16年 46粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值