最长回文子串(C/C++)
来源:互联网 发布:手机淘宝如何修改好评 编辑:程序博客网 时间:2024/05/29 15:10
给定一个字符串,求它的最长回文子串的长度。
思路:从给定字符串的头部开始,在每个字符的位置处设置两个指针,分别向前和向后两个方向依次判断各字符是否相等,当两个指针指向的字符不相等时计算回文子串的长度。重复这样的过程,直至扫描到字符串的最后一个字符为止。
内层的两个 for 循环,它们分别对于以 i 为中心的,长度为奇数和偶数的两种情况,整个代码遍历中心位置 i 并以之扩展,找出最长的回文。
注意:回文子串长度的计算方法
代码如下:
//最长回文子串#include <iostream>using namespace std;//*s为字符串,n为字符串的长度int LagPalindrome(char *str, int n){int count = 0;int max = 0;//最长回文子串的长度if (str == NULL || n<1){return 0;}for (int i = 0; i < n; i++){//子串为奇数时for (int j = 0; (i-j)>=0&&(i+j)<n; j++){if (str[i - j] != str[i + j]){break;}count = 2 * j + 1;}if (count > max){max = count;}//子串为偶数时for (int k = 0; (i - k)>=0 && (i + k + 1) < n; k++){if (str[i - k] != str[i + k+1]){break;}count=2*k + 2;}if (count > max){max =count ;}}return max;}int main( ){char str[] = "abccba";int n = strlen(str);int MaxLen;MaxLen = LagPalindrome(str, n);cout << "最长回文子串的长度是:"<<MaxLen<<endl;return 0;}
1 0
- 最长回文子串(C/C++)
- C\C++最长回文子串
- C语言最长回文子串
- [C++]LeetCode: 99 Longest Palindromic Substring (最长回文子串)
- [C++]LeetCode 5: Longest Palindromic Substring(最长回文子串)
- hdu3068 最长回文 (最长回文子串)
- HDU 3068 最长回文(求最长回文子串)
- c++-最长回文字符串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- 最长回文子串
- C#做窗体应用程序时,对excel涉及的背景色设置,边框设置,数据如何导入等的实现
- Socket编程(六)---TCP/NIO实例讲解
- 一句话介绍Hadoop家族产品
- Android学习系列(15)--App列表之圆角ListView(续)
- Java异常
- 最长回文子串(C/C++)
- JSP之——表单信息和图片一起提交
- 66. Plus One
- ssh 用法归纳
- maven命令
- 使用python+Selenium2+chrome模拟用户登录
- 2006 - MySQL server has gone away
- ListView只显示一行
- Android学习系列(16)--App工程结构搭建