输出最大长度的回文子串。

 string longestPalindrome(string s)
{ int id, mx, i, j, len, maxlen;
vector<char> cvec;
vector<int> ivec;
string str;
int ma, k; id = ;
mx = ;
ivec.push_back();
len = s.size();
maxlen = *s.size() + ; for (i = ; i < len; ++i)
{
cvec.push_back('#');
cvec.push_back(s[i]);
}
cvec.push_back('#'); for (i = ; i < maxlen; ++i)
{
if (mx > i)
{
int temp;
temp = ((mx - i - ) > (ivec[*id - i])) ? (ivec[*id - i]) : (mx - i - );
ivec.push_back(temp);
}
else
ivec.push_back(); for (; (i - ivec[i] >= ) && ((i + ivec[i]) < maxlen) && (cvec[i-ivec[i]] == cvec[i+ivec[i]]); ++ivec[i])
; if (mx < ivec[i] + i - )
{
mx = ivec[i] + i - ;
id = i;
}
} ma = ;
for (i = ; i < maxlen; ++i)
{
if (ivec[i] > ma)
{
ma = ivec[i];
k = i;
}
} for (j = , i = k - ivec[k] + ; j < ivec[k] - ; ++i, ++j)
{
++i;
str.push_back(cvec[i]);
} return str;
}

对于判断一个整数是否是回文,有另外的方法,不需要另外开辟空间。把地位当做高位,计算其值。

比如:123,计算3*100 + 2*10 + 1 的值是否与123相等。代码如下:

 void isPalindrome(int integer)
{
int temp, count, num, digit; if (integer < )
{
printf("不是回文整数\n");
return;
}
if (integer == )
{
printf("是回文整数\n");
return;
} temp = integer;
count = ;
while (temp)
{
count++;
temp = temp / ;
} temp = integer;
num = ;
while (temp > )
{
digit = temp - (temp / ) * ;
num = digit * int_pow(count) + num;
temp = temp / ;
count--;
} if (num == integer)
{
printf("是回文整数\n");
}
else
{
printf("不是回文整数\n");
} } int int_pow(int x)
{
int result = ; while (x > )
{
result = result * ;
x--;
}
return result;
}

最大长度回文子串(Manacher's algorithm)的更多相关文章

  1. 九度OJ 1528 最长回文子串 -- Manacher算法

    题目地址:http://ac.jobdu.com/problem.php?pid=1528 题目描述: 回文串就是一个正读和反读都一样的字符串,比如"level"或者"n ...

  2. 最长回文子串——manacher

    最长回文子串--Manacher 算法 (原版的博主的代码都是用py写的,这里改成c++) c++ 算法 字符串处理 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一 ...

  3. hihocoder #1032 : 最长回文子串 Manacher算法

    题目链接: https://hihocoder.com/problemset/problem/1032?sid=868170 最长回文子串 时间限制:1000ms内存限制:64MB 问题描述 小Hi和 ...

  4. hihoCoder #1032 : 最长回文子串 [ Manacher算法--O(n)回文子串算法 ]

    传送门 #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相 ...

  5. 51nod1089 最长回文子串 manacher算法

    0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一个字符串正着读和反着读是一样的,那它就是回文串.下面是一些回文串的实例: 12321 a aba abba aaaa ...

  6. lintcode最长回文子串(Manacher算法)

    题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...

  7. 最长回文子串Manacher算法模板

    Manacher算法能够在O(N)的时间复杂度内得到一个字符串以任意位置为中心的回文子串.其算法的基本原理就是利用已知回文串的左半部分来推导右半部分. 首先,在字符串s中,用rad[i]表示第i个字符 ...

  8. 最长回文子串—Manacher 算法 及 python实现

    最长回文子串问题:给定一个字符串,求它的最长回文子串长度.如果一个字符串正着读和反着读是一样的,那它就是回文串.   给定一个字符串,求它最长的回文子串长度,例如输入字符串'35534321',它的最 ...

  9. Girls' research---hdu3294(回文子串manacher)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3294 给出一个字符串和加密的字符规律 例如 c abcba c代表把串中的c改成a,d改成b... b ...

随机推荐

  1. linux mysql 简单记录

    mysql 1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: ...

  2. Unity 播放的声音比声音文件小很多-AudioListener-AudioClip

    今天做愤怒的小鸟时,播放的时候非常非常小,怎么也查不到原因,就去问群里的大佬.原来, 播放音乐的方法: AudioSource.PlayClipAtPoint(audioclip, transform ...

  3. mysql错误之errorcode 1215问题

    1.此类问题出现时我们往往会迫不及待的去百度,但是问题偶尔也不是我们想的那样,比如我本次犯下的错误如下: 上图是我给表添加外键约束的时候的sql.下图是我建的表,问题出哪里了?原来是我的数据库根本没有 ...

  4. 封装了一个电商放大镜移入放大的功能,适用于VUE

    代码地址:https://github.com/zhongqiulan/jqimgzoom 由于vue只支持ie9以上版本,所以这个插件也是一样的 效果图: 第一步,在goodsinfo文件中引入cs ...

  5. Codeforces Round #529 -C- Powers Of Two(二进制拆分)

    A positive integer xx is called a power of two if it can be represented as x=2yx=2y, where yy is a n ...

  6. 前端HTML(二/三)

    待补充 一.字体标签 字体标签包含:h1~h6.<font>.<u>.<b>.<strong>.<em>.<sup>.<s ...

  7. Hypertext Application Language(HAL)

    Hypertext Application Language(HAL) HAL,全称为Hypertext Application Language,它是一种简单的数据格式,它能以一种简单.统一的形式, ...

  8. FusionCharts的类 - 实例功能

    一.FusionCharts的类 - 实例功能 1.configure(name:string , value:string)  or  configure(configurations: Objec ...

  9. 剖析js中的数据类型

    首先说一下八种常见的数据类型:五种简单的数据类型和三种复杂数据类型. 简单数据类型 Number:数字类型 String:字符串 Boolean:布尔类型 Undefined:未定义 Null:空 复 ...

  10. MCS-51单片机的定时器/计数器概念

    一.MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计 ...