給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。
若可行,輸出任意可行的結果。若不可行,返回空字串。
示例 1:
輸入: s = "aab"
輸出: "aba"
示例 2:
輸入: s = "aaab"
輸出: ""
注意:s 只包含小寫字母並且長度在[1, 500]區間內。
解法:優先佇列--大頂堆
1class
solution 8//
};9string reorganizestring(string
s) 19
if(maxlen > (len + 1) / 2)20
return"";
2122 auto cmp = [&](const
char& letter1, const
char&letter2) ;
2526 priority_queue, decltype(cmp)>q(cmp);
27for(char ch = '
a'; ch<='
z'; ch++)
31string ans = "";32
while(q.size() > 1)46
if(q.size() > 0
)47 ans +=q.top();
48return
ans;49}
50 };
1class
solution 17}
18string ans = ""
;19 pair pre(0, '
');
20while
(q.size())
29return
ans;30}
31 };
767 重構字串
重構字串 題目描述提示幫助提交記錄社群討論閱讀解答 隨機一題 給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,5...
767 重構字串
給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。public string reorganizestring string s int counts new int 26 int maxcount 0 int length s.l...
767 重構字串
767.重構字串 給定乙個字串s,檢查是否能重新排布其中的字母,使得兩相鄰的字元不同。若可行,輸出任意可行的結果。若不可行,返回空字串。示例 1 輸入 s aab 輸出 aba 示例 2 輸入 s aaab 輸出 注意 s 只包含小寫字母並且長度在 1,500 區間內。基本思路 貪心演算法,首先使用...