最少新增幾個成為回文字串 nyoj36

2021-08-28 04:26:14 字數 529 閱讀 3956

描述

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"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...