描述
所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。
輸入第一行給出整數n(0輸出
每行輸出所需新增的最少字元數
樣例輸入
1樣例輸出ab3bd
2分析:求出原字串和倒置字串的最長公共序列,然後用字串長度減去這個公共長度即可,而公共序列的求解套用dp模板即可
#include #include#include#includeusing namespace std;
const int maxn = 1000+5;
int ma[maxn],dp[maxn][maxn],n,k;
int main()
}cout<}
return 0;
}
新增最少的字元讓字串變為回文字串(1)
新增最少的字元讓字串變為回文字串 1 給定乙個字串str,如果可以在str的任意位置新增字元,請返回在新增字元最少的情況下,讓str整體都是回文字串的一種結果。輸入描述 輸入包含一行字串,代表str 1 l engt hstr 5000 str 1 leq length leq 5000 str 1...
2 3 字串 新增最少字元使字串都是回文字串
給定乙個字串str,可以在str的任意地方新增字元,請返回在新增字元最少的情況下,讓str整體都是回文字串的結果 分析 1 問題關鍵 如何以個例推整體,再由整體推回個例?回文字串問題 顯然,當任意 i j 字串為回文字串時,其中的任意k使得 i k j k 同樣也是回文字串,這樣可以推出結論 先假設...
插入最少的字元使字串成為回文串
求出s中,是回文的最長子序列l,那麼結果ans length s length l 解法如下 1.求出s的逆序串s 2.求出s和s 的最長公共子串行l 3.ans length s length l 如下 include include include using namespace std con...