Leetcode 767 重構字串

2021-09-05 12:23:15 字數 1252 閱讀 4522

給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。

若可行,輸出任意可行的結果。若不可行,返回空字串。

示例 1:

輸入:s = "aab"輸出:"aba"
示例 2:

輸入:s = "aaab"輸出:""
注意:解題思路:

任務排程問題,排序。本題有點像之前的乙個任務排程問題,由於題量太大,忘了哪乙個。。。

統計當前字串各個字元的個數,然後按照數量多少排序,如果數量一樣,則按照字元大小排序,最終得到vector>mp,pair中char代表字元,int代表數量。

假設字元總數是num,當前排序後的最大數量mp[0].second。如果2*mp[0].second>num+1,那麼直接返回「」,必然有多餘的字元。如果2*mp[0].second==num+1。第乙個字元必然是mp[0].first,之後的成對即可,注意每一對都應該是mp[0].first在後,這樣可以防止當前末尾與下一層的開始一樣。如果,2*mp[0].second如果遇到2*mp[0].secondnum+1的情況,應該先考慮是否能將多餘的插入之前已經確定的結果,能則插入,不能則返回""。

leetcode 767 重構字串

描述 給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,500 區間內。思路從小到大,交叉著插入 bool cmp...

LeetCode 767 重構字串

給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,500 區間內。通過次數13,259 提交次數30,089思路 ...

leetCode 767 重構字串

給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,500 區間內。將出現頻率次數最多的字母重新排列後不相鄰,則可以...