标题

描述

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

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

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

样例输入
Confuciuss say: Madam,I?m Adam.

样例输出
Madam, I?m Adam

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define MAXN 5000+10
char buf[MAXN], s[MAXN];
int p[MAXN];int main()
{int n, m = 0, max = 0, x, y;int i, j;fgets(buf, sizeof(s), stdin);// 屏幕读取字符串n = strlen(buf);// 得到字符串的长度for(i = 0;i < n; i++){if( isalpha(buf[i]) ){// 如果是英文字母的话就记录下是英文字母的这个位置p[m] = i;// 然后把这个英文字母转化成大写存放到数组s中s[m++] = toupper(buf[i]);}}for(i = 0; i < m; i++){// 这里仅遍历所有的字母,排除了其他符号的干扰for(j = 0; i-j >= 0 && i+j < m; j++){// 当字符串是偶数的时候if( s[i-j] != s[i+j] )break;if( j*2+1 >max ){max = j*2+1;x = p[i-j];y = p[i+j];}}for(j = 0; i-j >= 0 && i-j+1 < m; j++){//字符串是奇数的时候if( s[i-j] != s[i-j+1] )break;if( j*2+2 > max ){max = j*2+2;x = p[i-j];y = p[i+j+1];}}}for(i = x; i <=y; i++)printf("%c", buf[i]);printf("\n");return 0;
}

刘汝佳小白书-最长回文字串相关推荐

  1. 求字符串的最长回文字串 O(n)

    昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串.我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来. 回头我 ...

  2. leetcode系列--5.最长回文字串

    leetcode系列–第5题.最长回文字串 给你一个字符串 s,找到 s 中最长的回文子串. 子串和子序列的区别: 子串:子串是指一个字串中连续的字串 子序列:子序列是指一个字串中非连续的字串 输入: ...

  3. 刘汝佳紫书 uva1592

    刘汝佳上传的代码没耐心看...就大致照着书上写的思路写了一个...一开始发现全写错了耗了半天... 定义一个pair,这个pair里有存两个队,字符串对和int对.每每读入一行的时候看看map中是否存 ...

  4. 对刘汝佳蓝书点双连通分量(BCC)模板的理解

    /*经过简单的使用,对刘汝佳的这个板做几个简单的说明:1.算法结束后每个bcc[i]里存入一个双连通分量的点的标号,其中割点也被存进去,也就是说割点可以属于多个双连通分量2.根据刘汝佳所说的点-双连通 ...

  5. 力扣HOT100算法题5:最长回文字串

    文章目录 一.题目 二.方法一:解题思路 三.方法一:代码解析 四.方法二:动态规划 五.方法二:代码解析 一.题目 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1:输入:s = &quo ...

  6. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)

    leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...

  7. Lc5-最长回文字串

    Lc5-最长回文子串 枚举字符串中的每一个字符,从当前下标开始想两边扩散,知道i 和 j指向的字符不相等就判断结果需不需要更新,如果他们之间的长度比已经res大就更新结果. js 求数组求字符串的长度 ...

  8. ural 1297 O(nlogn) 后缀数组求最长回文字串

    把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...

  9. UVa 11062 Andy's Second Dictionary(刘汝佳紫书升级题)

    在介绍这道题之前,先介绍一下紫书里面和这道题很像的一道题: 紫书P112页 的例题5-3 安迪的第一个字典(Andy's First Dictionary UVa 10815) 原题链接如下: And ...

  10. 刘汝佳蓝书后缀数组模板解释及补全

    相信很多初学后缀数组的ACMer在学习蓝书中的后缀数组部分遇到了一些障碍,可能像我一样看明白了P219 --220的讲解和算法,百度了基数排序的方法,然后被卡在P221的代码上了,本文目的即分享我对这 ...

最新文章

  1. 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut
  2. ComboGrid 行内点击编辑内容
  3. 二维点云数据椭圆拟合算法及C++实现
  4. sizeo(结构体)的问题
  5. 第29期:蓝桥杯练习-2022/2/12
  6. 数据挖掘十大经典算法原理
  7. 批量修改文件夹名称的一部分
  8. 金蝶与旺店通集成解决方案(金蝶为主)
  9. 初体验scrapy-爬取豆瓣250电影数据
  10. 怎样用计算机将二进制转换成十进制,二进制如何转换为十进制?
  11. 如何将mp3转换flac音频文件格式
  12. 【转】区块链面试指南--之共识算法
  13. 360众测靶场云文件服务器,360 政企安全官网_帮助应对高级威胁攻击
  14. 自动化软件测试工作内容,「自动化测试」自动化测试岗位职责(职位描述,任职要求)...
  15. 微信公众号文章采集工具,可采集文章文字内容信息及图片
  16. 微信小程序--轮播图
  17. paddle video_tag paddle.fluid.io.xmap_readers
  18. 【第三方互联】9、新浪微博(sina)授权第三方登录
  19. ASR6500S低功耗LoRa+射频前端LPWAN应用芯片
  20. linux中文输入法 2017,ubuntu 16.04 下安装并切换搜狗中文输入法

热门文章

  1. 使用Clipboard.js轻松实现“复制到剪贴板”
  2. 海量数据top K问题
  3. 身份证号码归属地数据库 身份证具体信息查询服务
  4. SIM900A 通过RS232串口进行短信的发送。
  5. 9款主流图表控件轻松实现数据可视化
  6. echarts迁徙图 vue_如何快速在Vue中实现流向图或迁徙图?
  7. 流氓软件mcafee之Mac端卸载
  8. [乐意黎原创]]CuteFTP 操作文件时,中文文件名显示乱码的解决
  9. 深度Linux挂载盘
  10. 智慧政府:大数据治国时代的来临 - 电子书下载(高清版PDF格式+EPUB格式)