1400 構造 K 個回文字串

2021-10-20 04:31:31 字數 1193 閱讀 7571

題目描述:

給你乙個字串 s 和乙個整數 k 。請你用 s 字串中 所有字元 構造 k 個非空 回文串 。

如果你可以用 s 中所有字元構造 k 個回文字串,那麼請你返回 true ,否則返回 false 。

示例 1:

輸入:s = 「annabelle」, k = 2

輸出:true

解釋:可以用 s 中所有字元構造 2 個回文字串。

一些可行的構造方案包括:「anna」 + 「elble」,「anbna」 + 「elle」,「anellena」 + 「b」

示例 2:

輸入:s = 「leetcode」, k = 3

輸出:false

解釋:無法用 s 中所有字元構造 3 個回文串。

示例 3:

輸入:s = 「true」, k = 4

輸出:true

解釋:唯一可行的方案是讓 s 中每個字元單獨構成乙個字串。

示例 4:

輸入:s = 「yzyzyzyzyzyzyzy」, k = 2

輸出:true

解釋:你只需要將所有的 z 放在乙個字串中,所有的 y 放在另乙個字串中。那麼兩個字串都是回文串。

示例 5:

輸入:s = 「cr」, k = 7

輸出:false

解釋:我們沒有足夠的字元去構造 7 個回文串。

1 <= s.length <= 10^5

s 中所有字元都是小寫英文本母。

1 <= k <= 10^5

方法1:

(1)統計出各個字元的數量分布;

(2)然後統計出字元的奇數的數量;

(3)則奇數數量的字元的個數要小於等於k,且k小於s的長度;

class

solution

int odd_num=0;

//統計奇數個字元的數量

for(

int& i:counts)

}//根據約束條件返回值

return odd_num<=k&&k<=s.

size()

;}};

構造回文串

給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda goo...

回文字串

描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在 要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。輸入第一行給出整數n 0思路分析 1.判斷字串前後倆個字元...

回文字串

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