输入一个字符串输出该字符串Φ最大对称子串的长度。例如输入字符串:“avvbeeb”该字符串中最长的子字符串是“beeb”,长度为4因而输出为4。
1.全遍历的方法复杂度O(n3);
2.遍历原字符串的所有子串,然后判断每个子串是否对称;
实现方法是:我们让一个指针i从头至尾遍历我们用另一个指针j从j=i+1逐一指向i后面嘚所有字符。就实现了原串的所有子串的遍历(子串为指针i到j中间的部分);
最后判断得到的子串是否对称即可;
二此外还有个巧妙的方法,值得和大家分享一下(这是自己想的哦转载请注明出处):
(上下对齐的量元素beeb;beeb比较,得到最长对称子串)
该方法要移动m+n次每次元素比较个数从1到m不等,复杂度O(n2);
三最值得推荐的还是下面的方法,复杂度O(n):
(以下都是自己想的自己写的码字实在辛苦,转载請注明出处)
1.起始这道题分析起来非常扯淡花了我两天的空闲时间才搞定!
3. 1-k位的元素中,其中最长对称子串(包含第k位元素)长度为f(n)我们讨论f(n+1)与f(n)的关系;
4.比如 b xxx a其中xxx代表对称子串,a为第n+1位元素我们现在求f(n+1);
5.我们分析所有情况:(我们用xxx代表n位对称子串)