1.最長回文子串行(可以不連續)
#include
#include
#include
#include
using namespace std;
//遞迴方法,求解最長回文子串行
intlps
(char
*str,
int i,
int j)
intmain()
#include
#include
#include
using namespace std;
//動態規劃求解最長回文子串行,時間複雜度為o(n^2)
intlpsdp
(char
*str,
int n)
}return dp[0]
[n -1]
;//返回字串str[0...n-1]的最長回文子串行長度
}int
main()
例:求回文子串行的個數::
#include
#include
using namespace std;
intnumofpalindromesubsequence
(string str)
}return dp[0]
[len-1]
;}intmain()
return0;
}
2.最長回文子串
暴力法:
public static string findlongestpalindrome
(string s)
// 若index1=index2,表示串是類似於abcba這種型別;若大於,則是abccba這種型別
if(index1 >= index2 && j - i > maxlength)}}
if(maxlength >0)
return s.
substring
(start, start + maxlength)
;return null;
}
動態規劃:
public static string findlongestpalindrome1
(string s)
}// 使用上述結果可以dp出子串長度為3~len -1的子串
for(
int strlen =
3; strlen < len; strlen ++)}
}if(maxlength >0)
return s.
substring
(start, start + maxlength)
;return null;
}
中心擴充套件法:
public static string findlongestpalindrome2
(string s)
j --
; k ++;}
}// 類似於abba這種情況,以i,i+1為中心向兩邊擴充套件
for(
int i =
0; i < len; i++
) j --
; k ++;}
}if(maxlength >0)
return s.
substring
(start, start + maxlength)
;return null;
}
manacher演算法:
public static string findlongestpalindrome3
(string s)
else
// 否則,需要根據i點一點一點的計算
res[i]
= r -i + k -1;
if(res[i]
+ i > r)
} maxc = res[maxc]
> res[i]
? maxc : i;
// maxc儲存的是回文半徑最大的那個點的位置
} string substr = str.
substring
(maxc - res[maxc]
, maxc + res[maxc]+1
);stringbuffer sb = new stringbuffer()
;for
(int i =
0; i < substr.
length()
; i++
)return sb.
tostring()
;}public static string dealwiths
(string s)
// 將原字串進行處理
return sb.
tostring()
;}
最長回文子串與最長回文子串行
題目1 求最長回文子串 題目2 求回文子串數量 忽略兩個題目對於返回結果的不同要求 前者返回最長的結果,後者返回最長的結果對應的長度即可 dp陣列的定義的區別 最長回文子串 dp i j 表示的是string s中從i到j的子串 用python語法就是s i j 1 是否為回文子串。最長回文子串行 ...
最長回文子串 回文子串行 公共子串行
一 最長回文子串 連續 1.manacher演算法 見前面 2.動態規劃 bool p 100 100 for int i 0 i 2 reutrn s.substr start,maxlength 二 最長回文子串行 不連續 1.遞迴 2.動態規劃 3.將字串反轉,再求兩個字串的最長公共子串行lc...
最長回文子串行 回文子串行個數
主要內容 1 什麼是回文?2 字元子串和字元子串行的區別 3 最長回文子串行的思路和 4 回文子串行個數的思路和 回文指的是正讀和反讀都一樣的字串,如aba,abba等 字元字串指的是字串中連續的n個字元 如palindrome中,pa,alind,drome等都屬於它的字串 而字元子串行指的是字串...