演算法筆記 Codeup最長回文子串

2021-09-11 14:36:20 字數 1304 閱讀 9569

問題 a: 【字串】最長回文子串

時間限制: 1 sec 記憶體限制: 128 mb

提交: 192 解決: 92

[提交][狀態][討論版][命題人:外部匯入]

題目描述

輸入乙個字串,求出其中最長的回文子串。子串的含義是:在原串中連續出現的字串片段。回文的含義是:正著看和倒著看相同。如abba和yyxyy。在判斷回文時,應該忽略所有標點符號和空格,且忽略大小寫,但輸出應保持原樣(在回文串的首部和尾部不要輸出多餘字元)。輸入字串長度不超過5000,且佔據單獨的一行。應該輸出最長的回文串,如果有多個,輸出起始位置最靠左的。

輸入一行字串,字串長度不超過5000。

輸出字串中的最長回文子串。

樣例輸入

confuciuss say:madam,i』m adam.

樣例輸出

madam,i』m adam

提示樣例說明:madam,i』m adam去掉空格、逗號、單引號、忽略大小寫為madamimadam,是回文。

#include #include #include #include using namespace std;

#include const int maxn=5002;

char str[maxn],str1[maxn];

int main()

; int res = 0;

gets(str);

//const int n = str.length();

for (int i = 0; i < strlen(str); i++)//將str去掉符號後複製到str1中,p[i]記錄str1[i]在str中的下標 }

//初始化dp邊界

int length = strlen(str1);

for (int i = 0; i < length-1; i++)

} dp[length - 1][length - 1] = 1;

//動態規劃開始

int maxi = 0, maxj = 0;

for (int l = 3; l <= length; l++)

}}//動態規劃結束

//判斷str1中最長的回文串

int maxij = 0;

for (int i = 0; i < length; i++)}}

// for (int i = p[maxi]; i <= p[maxj]; i++)

printf("%c", str[i]);

printf("\n");

return 0;

}

演算法 最長回文子串

題目描述 對於乙個字串,請設計乙個高效演算法,計算其中最長回文子串的長度。給定字串a以及它的長度n,請返回最長回文子串的長度。例如 輸入 abc1234321ab 12 返回值 7 最長回文子串 public static intgetlongestpalindrome string a,int n...

最長回文子串 最長回文子串行

1.最長回文子串行 可以不連續 include include include include using namespace std 遞迴方法,求解最長回文子串行 intlps char str,int i,int j intmain include include include using n...

最長回文串 演算法 4 求解最長回文子串

問題描述 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。注釋 回文通俗的說就是正著念和反著念都一樣,如 上海自來水來自海上。示例 1 輸入 dabccbac 輸出 abccba 示例 2 輸入 cbbd 輸出 bb 解題思路 此處撰寫解題思路 遍歷每乙個索引,...