Grokking the Coding Interview: Patterns for Coding Questions

0% completed

Problem Challenge 1: Rearrange String K Distance Apart (hard)

Problem Statement

Given a string and a number ‘K’, find if the string can be rearranged such that the same characters are at least ‘K’ distance apart from each other.

Example 1:

Input: "mmpp", K=2
Output: "mpmp" or "pmpm"
Explanation: All same characters are 2 distance apart.

Example 2:

Input: "Programming", K=3
Output: "rgmPrgmiano" or "gmringmrPoa" or "gmrPagimnor" and a few more  
Explanation: All same characters are 3 distance apart.

Example 3:

Input: "aab", K=2
Output: "aba"
Explanation: All same characters are 2 distance apart.

Example 4: ``

.....

.....

.....

Like the course? Get enrolled and start learning!
Shashwat Kumar

Shashwat Kumar

· 2 years ago

  • str consists of only lowercase English letters. - This is not correct as there are uppercase letters also.
P

Pete Stenger

· 2 years ago

from heapq import * from collections import deque, Counter class Solution:   def reorganizeString(self, str, k):     counts = Counter(str)     heap = [       (-value, char) for char, value in counts.items()     ]     heapify(heap)     if -heap[0][0] > (len(str) + k - 1)//k:       return ''         res = list('_' * len(str))     i = 0     offset = 0     while heap:       count, char = heappop(heap)       while count < 0:         res[i] = char         i += k         if i >= len(res):           offset += 1           i = offset         count += 1     return ''.join(res)