C++ 如何降低子字符串回文的时间复杂度?
我正在解决这个问题,输入:一个字符串,输出:它是回文中最长的子字符串 我在O(n^3)中以下面的方式解决了它。我试图用O(n^2)来解它。请帮忙。 代码如下:C++ 如何降低子字符串回文的时间复杂度?,c++,time-complexity,palindrome,substr,C++,Time Complexity,Palindrome,Substr,我正在解决这个问题,输入:一个字符串,输出:它是回文中最长的子字符串 我在O(n^3)中以下面的方式解决了它。我试图用O(n^2)来解它。请帮忙。 代码如下: int-isPalindrome(字符串str){ 对于(int i=0,j=str.size()-1;i=0&&right)只需搜索“最长回文子串”,您将得到许多这样的文章。如果您想要O(n)方法,请使用。本文共有4组,下一个链接位于末尾。有关Manacher算法的更多文章:,。如果您想要O(n^2)时间复杂度,那么您可能还想看看使用D
int-isPalindrome(字符串str){
对于(int i=0,j=str.size()-1;i最大长度){
maxLength=计数;
result=temp;//将子字符串保存为结果
}
}
}//环端的j
}//i循环结束
返回结果;
}
配对getPalindromeRange(字符串str,int left,int right){
虽然(左>=0&&right)只需搜索“最长回文子串”,您将得到许多这样的文章。如果您想要O(n)
方法,请使用。本文共有4组,下一个链接位于末尾。有关Manacher算法的更多文章:,。如果您想要O(n^2)
时间复杂度,那么您可能还想看看使用DP的解决方案。但是,此DP解决方案具有O(n^2)
空间复杂度,而我在上面的注释中提到的是O(1)
。