CSU 1328 近似回文词【最长回文字符串(三种方法)】
输入一行文本,输出最长近似回文词连续子串。所谓近似回文词是指满足以下条件的字符串:
1. S以字母开头,字母结尾
2. a(S)和b(S)最多有2k个位置不同,其中a(S)是S删除所有非字母字符并且把所有字母转化成小写之后得到的串,b(S)是a(S)的逆序串。
比如当k=1时,Race cat是一个近似回文词,因为a(S)=racecat和b(S)=tacecar只有2个位置不同。
Input
输入包含不超过25组数据,每组数据包含两行。第一行是整数k(0<=k<=200),第二行为字符串S,包含至少一个字母但不超过1000个字符(换行符不算)。S只包含字符、空格和其他可打印字符(比如逗号,句号),并且不会以空白字符开头。
Output
对于每组测试数据,输出最长近似回文子串的长度和起始位置(S的第一个字符是位置1)。如果有多个最长近似回文子串解,起始位置应尽量小。
Sample Input
1 Wow, it is a Race cat! 0 abcdefg 0 Kitty: Madam, I'm adam.
Sample Output
Case 1: 8 3 Case 2: 1 1 Case 3: 15 8
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #include<cstdlib> #include<cmath> #include<set> #include<list> #include<deque> #include<map> #include<queue> #define INF 999999 using namespace std;int main() {int n,i,j;char s[1005];char ss[1005];int p[1005];int cnt,maxn,start,cas;int kase=1;while(~scanf("%d",&n)){getchar();// fgets(s,sizeof(ss),stdin); gets(s);int len=strlen(s);cnt=0,maxn=0,start=0;for(int i=0;i<len;i++)//预处理 {if(isalpha(s[i]))//记录原始位置 {p[cnt]=i;ss[cnt++]=tolower(s[i]);}}for(i=0;i<cnt;i++){cas=0;for(j=0;j<=i&&i+j<cnt;j++){if(ss[i-j]!=ss[i+j])cas++;if(cas>n)break;}j--;if(p[i+j]-p[i-j]+1>maxn){maxn=p[i+j]-p[i-j]+1;start=p[i-j];}cas=0;for(j=0;j<=i&&i+j+1<cnt;j++){if(ss[i-j]!=ss[i+j+1])cas++;if(cas>n)break;}j--;if(j<=-1)continue;if(p[i+j+1]-p[i-j]+1>maxn){maxn=p[i+j+1]-p[i-j]+1;start=p[i-j];}}printf("Case %d: %d %d\n",kase++,maxn,start+1);}return 0; }
View Code
转载于:https://www.cnblogs.com/Roni-i/p/7385507.html
CSU 1328 近似回文词【最长回文字符串(三种方法)】相关推荐
- Word文档怎么横向排版?这三种方法简单高效专业
我们在利用Word文档处理日常工作时,为了文档的美观,我们会经常对Word文档进行各种形式的排版,比如对Word文档进行横向排版.如果有小伙伴不知道该如何进行横向排版,那么今天小编将要向大家分享三个横 ...
- python判断回文数字,Python判断回文数的三种方法实例
需求: 从控制台输入一个五位数,如果是回文数就打印"是回文数",否则打印"不是回文数",例如:11111 12321 12221 "回文"是 ...
- 判断回文数的三种方法
法一:主要用于判断数字回文,不能用于字符串回文. #include<stdio.h> void fun(long num) {long r=0,temp=num;//记录判断数值while ...
- 调节e18-d80nk的测量距离_线缆太长负载太远,负载端电压难测量?三种方法帮你搞定...
关键词:电缆, 线缆阻抗, 负载电流, 开尔文检测 在产品设计,研发过程中,我们常会碰到稳压器与负载分离的情况.此时,如果电缆线太长,线缆阻抗无法忽略.负载电流太大,这些都会使得配电线上的压降增大,从 ...
- Android实现截屏和截长图功能的几种方法
一般情况下各种型号的手机都会有自带的截屏功能,也会有诸如"开关机键+音量键"的截屏快捷键,只要手机是亮屏状态,都会将手机屏幕的可视区域(包含状态栏)全部截取下来. 如果开发中想要调 ...
- Win11 22H2怎么退回之前版本?Win11回滚Win10系统教程(三种方法)
最近,新的Windows11 22H2正式版已经推送了,有不少更新到新系统的朋友出现了问题,想要退回之前的系统版本,本文就针对Win11 22H2怎么退回之前版本的问题,带来了三种Win11回滚Win ...
- JavaScript刷新当前页面的三种方法,载入新文档替换当前页面
通过JavaScript刷新当前页面的三种方法代码就可以简单的实现,首先我们来看三种刷新当前页的方法: reload() 方法; replace() 方法; 页面自动刷新; 方法1:reload() ...
- CSU 1328: 近似回文词
省赛的A题...现场都没什么人做... 其实就一暴力水题......坑死了... 1328: 近似回文词 Time Limit: 1 Sec Memory Limit: 128 MB Submit: ...
- jsp判断字符串相等_最长回文字符串三种解法
先解释一下什么是回文字符串,比如说字符串"aba",无论是从先往后读取还是从后往前读取,结果都是一样的.当给定很长的字符串时,如何快速获取到最长的回文字符串,这也是大厂比较常见的算 ...
最新文章
- 2016全球教育机器人发展白皮书
- docker privileged 权限 参数
- 实现Windows Phone、Android和iOS平台的统一硬件访问
- ANNOTATION PROCESSING 101 by Hannes Dorfmann — 10 Jan 2015
- 机器学习笔试题精选(七)
- Mysql显示创建表的sql语句
- 软件设计师下午题java_2018上半年软件设计师下午真题(三)
- 最优化学习笔记(六)——牛顿法性质分析
- 服装零售行业洞察报告
- MixedRealityToolkit-Unity:MR应用必用神器
- SQLite 被曝存在漏洞,数千应用受影响
- 西湖论剑2020writeup
- appium driver参数及命令行参数
- DFRobot新品Fermion:MCP9808高精度数字温度传感器的简介和工作原理介绍
- python ftp下载文件
- 在集群是手动启动Ray
- XP SP3桌面IE图标不见了,如何找回?
- MeasureReady TM 155 开发人员问答,第 2 部分:触摸屏设计和用户测试
- Android 图片预览功能
- 【手势隔层透传】iOS viewA被viewB遮挡,如何让viewA依然响应添加的pan平移手势