回文字串

2021-05-27 05:32:29 字數 773 閱讀 8422

描述

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在

要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。

輸入第一行給出整數n(0思路分析:

1.判斷字串前後倆個字元是否相同,如果相同,則刪去這倆字元,判斷剩餘的字元,不需要新增字元。

2.如果不相同,則新增最少的字元的數量 = min((在字串前新增和末尾一樣的字元,刪除末尾字元,判斷其餘字串),(在字串後新增和前邊一樣的字元,刪除

前邊的字元, 判斷其餘字串) ) + 1 ;很容易用遞迴實現,不過考慮到會超時,可以用陣列儲存計算過程中的結果,避免不必要的重複計算。

第二種思路:

其實就是最長公共子串行的變種,將原序列str倒置後得到tmp。求出最長公共子串行的長度,則這些就是回文字串,剩下的就是沒有匹配的字元的個數。用總長度減去最長公共子串行的長度,就得到需要新增的字元數量。

**如下:

#include#include#include#include#includeusing namespace std;

#define max 1010

int res[max][max];

int main()

} printf("%d\n", str.size() - res[i][j]); //總長度減去res[i][j]就是不匹配字元個數

}}

回文字串

還是在龐果網 看到的題目,這次選了個簡單的,回文字串。題目內容 回文字串是指從左到右和從右到左相同的字串,現給定乙個僅由小寫字母組成的字串,你可以把它的字母重新排列,以形成不同的回文字串。思路 不滿足上面條件的直接返回0,因為這樣構不成回文 判斷出能形成回文以後,將元素減半,在字串一半的長度內進行組...

回文字串

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文...

回文字串

given a string,determine if it is a palindrome,considering only alphanumeric characters and ignoring cases.for example,a man,a plan,a canal panama is ...