問題 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 解題思路 此處撰寫解題思路 遍歷每乙個索引,...