題目描述:
給你乙個字串 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,因為這樣構不成回文 判斷出能形成回文以後,將元素減半,在字串一半的長度內進行組...