Leetcode # 767. Reorganize String

Problem

https://leetcode.com/problems/reorganize-string

n := len(s)
k := len(set(s))

find s’ := s'[i] != s[i + 1], i = 0, 1, 2, …,  n – 1

Solution

Time Complexity: O(n + k * log(k))
Space Complexity: O(n)
(The input and output generally do not count towards the space complexity.)

class Solution:
  def reorganizeString(self, s: str) -> str:
    counter = Counter(s)
    chars = [k for k, c in counter.most_common() for _ in range(c)]
    i = j = 0
    n = len(s)
    result = [None] * n
    while i < n:
      result[i] = chars[j]
      i += 2 if j + 1 < n and chars[j + 1] == chars[j] else 1
      j += 1
    if j + 1 < n and chars[j] == result[0]: return ""
    i = 1
    while i < n:
      if result[i]:
        i += 1
        continue
      if i + 1 < n and result[i + 1] == chars[j]:
        return ""
      result[i] = chars[j]
      i += 1
      j += 1
    return "".join(result)

 

Last Updated on 2023/08/23 by A1go

目錄
Bitnami