[Leetcode題解]重構字符串

767. 重構字符串

image.png

思路:使用哈希表,將字符串按照頻率排序後 組裝在一塊兒。這個時候重點來了,怎麼樣讓這些相同的字符不相鄰的,技巧就是使用切片!
由於排序後相鄰的字符是同樣的,因此,咱們把前半部分(等於或者大於後邊一個),按照間隔的放到結果字符串中。而後把後半部分同理。spa

代碼以下:3d

class Solution(object):
    def reorganizeString(self, S):
        """
        :type S: str
        :rtype: str
        """
        n = len(S)

        A = []
        for c,x in sorted((S.count(x),x) for x in set(S)):
            if c>(n+1)/2:return ""
            A.extend(c*x)

        ans = [None]*n

        ans[::2],ans[1::2] = A[n//2:],A[:n//2]

        return "".join(ans)
相關文章
相關標籤/搜索