C/C++教程

动态规划-最长回文子串-C++

本文主要是介绍动态规划-最长回文子串-C++,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、题目

题目描述
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。

给定字符串A以及它的长度n,请返回最长回文子串的长度。

示例1
输入

"abc1234321ab",12

返回值

7

二、思路

1、用arr二维数组记录之前的每一个结果,如果是汇文子串则为1,否则为0

三、代码

class Solution {
public:
    int getLongestPalindrome(string A, int n) {
        if(n<=1)
        {
            return n;
        }
        int arr[n][n];
        for(int i=0;i<n;++i)
        {
            arr[i][i]=1;
        }
        int Count=0;
        for(int i=0;i<n;++i)
        {
            for(int j=0;j<i;++j)
            {
                if(A[i] !=A[j])
                {
                    arr[i][j]=0;
                    continue;
                }
                if(i-j==1)
                {
                    arr[i][j]=1;
                }
                else
                {
                    arr[i][j]=arr[i-1][j+1];
                }
                if(arr[i][j]==1)
                {
                    Count=Count>(i-j+1)?Count:(i-j+1);
                }
                    
            }
        }
        return Count;
    }
};
这篇关于动态规划-最长回文子串-C++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!