zoukankan      html  css  js  c++  java
  • 最长回文子串

    使用C /C++ 求最长回文子串

    #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[] = "112233";
    	int n = strlen(str);
    	int MaxLen;
    	MaxLen = LagPalindrome(str, n);
    
    	cout << "最长回文子串的长度是:" << MaxLen << endl;
    
    	return 0;
    }
    

      

  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/baizhuang/p/13255723.html
Copyright © 2011-2022 走看看