[ACdream]女神教你字符串——导字符串
Problem Description
正如大家知道的,女神喜欢字符串,而在字符串中,女神最喜欢回文字符串,但是不是所有的字符串都是回文字符串,但是有一些字符串可以进行“求导”来变成回文字符串。
字符串中只包含小写字母。
求导过程如下,C++:
string dif(const string x)
{
if(x.length()<=1)
return "";
string res="";
for(int i=1;i<x.length();++i)
res+=abs(x[i]-x[i-1])+'a';
return res;
}
C:
void dif(char*x,char*res)//注意有可能会溢出
{
if(x[0]==0||x[1]==0)
{
res[0]=0;
return;
}
int len=1;
for(int i=1;x[i];++i,++len)
res[i-1]=abs(x[i]-x[i-1])+'a';
res[len-1]=0;
}
例如"aa"的导字符串是“a",”aab“的导字符串是"ab","aacfwssg"的导字符串是"acdream"。
那么给定一个字符串,请判断在它各阶导字符串中,最长的回文子串是多长?
二阶导字符串即为导字符串的导字符串。
n阶导字符串即为n-1阶导数的导字符串。
Input
Output
Sample Input
abcd
abcba
acdream
Sample Output
3
5
3
Hint
样例一,求一次导字符串后为”aaa“,最长回文子串就是本身,所以长度为3
样例二,本身就是回文串,因此,输出本身长度即可
样例三,acdream->cbonem->bnbji->mmib->aeh->ed->b
最长回文串长度分别为1,1,3,2,1,1,1,因此输出3
解题思路:
核心就是求最大回文串,但是又不是直接求的,是要求不停的求异后的最大回文串,这题就是由于数据不大,直接从本身到求异后,调用Manacher算法就可以找到最大回文串,然后求最大的就可以了!
AC代码:
#include<iostream>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
char ss[],s[],res[];
int p[]; void dif(char *s,char *res)
{
if(s[]==||s[]==)
{
res[]=;
return;
}
int len=;
for(int i=;s[i];++i,++len)
res[i-]=abs(s[i]-s[i-])+'a';
res[len-]=;
}
int Manacher(char *s)
{
int len = strlen(s), maxp = , ans = ;
for(int i = len; i >= ; i--)
{
s[i * + ] = s[i];
s[i * + ] = '#';
}
s[] = '*';
for(int i = ; i < * len + ; i++)
{
if(p[maxp] + maxp > i)
p[i] = min(p[ * maxp - i], p[maxp] + maxp - i);
else
p[i] = ;
while(s[i - p[i]] == s[i + p[i]])
p[i]++;
if(p[maxp] + maxp < i + p[i])
maxp = i;
if(ans < p[i])
ans = p[i];
}
return ans - ;
}
int main()
{
int max1;
while(gets(s))
{
max1=;
while(strlen(s)>)
{
memset(p,,sizeof(p));
strcpy(ss,s);
max1=max(max1,Manacher(ss));
dif(s,res);
strcpy(s,res);
if(max1>=strlen(s)) break;
}
printf("%d\n",max1);
}
return ;
}
[ACdream]女神教你字符串——导字符串的更多相关文章
- [ACdream] 女神教你字符串——三个气球
Problem Description 女神邀请众ACdream开联欢会,显然作为ACM的佼佼者,气球是不能少的~.女神准备了三种颜色的气球,红色,黄色,绿色(交通信号灯?) 有气球还不能满足女神,女 ...
- [ACdream]女神教你字符串——违和感
题目描述: 女神最喜欢字符串了,字符串神马的最有爱了. 女神是一个重度强迫症患者,面对不是对称的东西,她会觉得太违和了,就会爆炸.所以她手上的字符串都是回文的,像什么a,b,aabaa,abcba,上 ...
- JS字符串替换函数:Replace(“字符串1″, “字符串2″),
JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...
- c#.net常用字符串函数 字符串常用方法
RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1); //去掉最后一个逗号 Compare 比较字符串 ...
- Javascript里,想把一个整数转换成字符串,字符串长度为2
Javascript里,想把一个整数转换成字符串,字符串长度为2. 想把一个整数转换成字符串,字符串长度为2,怎么弄?比如 1 => "01"11 => " ...
- 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据
第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...
- go golang 判断base64数据 获取随机字符串 截取字符串
go golang 判断base64数据 获取随机字符串 截取字符串 先少写点,占个坑,以后接着加. 1,获取指定长度随机字符串 func RandomDigits(length int) strin ...
- jquery获取当前按钮、截取字符串、字符串拼接、动态循环添加元素
截取字符串:字符串拼接:动态循环添加元素:获取当前按钮: {data : null, render: function(data, type, row ) { var loginName = $(&q ...
- 剑指offer 1,输入一个字符串,将字符串的空格替换成%20
剑指offer 1,输入一个字符串,将字符串的空格替换成%20 function replaceSpace(str){ return str.replace(/\s/g,"% ...
随机推荐
- 控制结构(5) 必经之地(using)
// 上一篇:局部化(localization) // 下一篇:最近最少使用(LRU) 基于语言提供的基本控制结构,更好地组织和表达程序,需要良好的控制结构. 前情回顾 上一周,我们谈到了分支/卫语句 ...
- 下载安装ActiveMQ(消息队列)
安装步骤: 第一步.安装jdk环境,因为ActiveMQ是使用java语言编写. 第二步.将下载好的activemq压缩包上传至Linux系统,进行解压. 第三步.进入解压后的bin/目录,进行启动a ...
- python之socket--粘包补充
struct补充 import struct import json header_dic={'total_size':123123, 'filename':None, 'md5':None} hea ...
- Linux下服务器重启
Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdow ...
- 浅谈IT技术女转战微电商初体验
今天闲来无事,突然想翻看下之前写的技术博客,很是意外,居然那么多阅读量,于是想想做微商也有一段时间了,决定写写初入微商的初体验. 先自我介绍一下,本人是一名理工女,做IT行业的,这个行业也许有人了解, ...
- java equals()方法
java基础学习总结--equals方法 一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class Te ...
- ArrayListd的长度问题
namespace ArrayListd的长度问题{ class Program { static void Main(string[] args) { //需要的参数是object类型 //alt+ ...
- 关于js浮点数计算精度不准确问题的解决办法
今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一直碰到这个问题,都是简单的使用tofixed方法进行处理一下,这对于一个程序员来说是及其不严谨的.因此在网上收集了一些处理浮点数精 ...
- maven编译时错误:无效的目标发行版
(转)Maven 将依赖打进一个jar包 博客分类: maven maven配置 <?xml version="1.0" encoding="UTF-8&quo ...
- Beautiful Dream hdu3418 (直接做或二分)
Beautiful Dream Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...