Re: [闲聊] 每日LeetCode

楼主: Rushia (みけねこ的鼻屎)   2023-08-23 19:58:41
https://leetcode.com/problems/reorganize-string/description/
767. Reorganize String
给你一个字串 s,求出这个 s 是否可以透过重排列得到一个相邻字符都不相同的字串,
若可以则返回任意的结果,否则返回""。
Example 1:
Input: s = "aab"
Output: "aba"
Example 2:
Input: s = "aaab"
Output: ""
思路:
1.用贪婪去想,如果一个字串相邻字串都不相同,那么出现次数比较多的字符先放在
前面才比较有机会在后面不相邻。
2.用 count 统计每个字母的出现次数,used 统计这轮是不是已经用过所有字母。
3.每轮都从还没排列的字符列表中取出出现最多次的字符去排列,如果和前一个字符
不相同或就把他插入并更新次数,如果不同就尝试其他没用过的字符。
4.如果每个字符都用过但是满足不了条件就提早返回 "",否则不断 loop 直到构建的
字串长度等于 s 的长度即可。
Java Code:

Links booklink

Contact Us: admin [ a t ] ucptt.com