Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

एक स्ट्रिंग को पुनर्व्यवस्थित करने के लिए पायथन प्रोग्राम ताकि सभी समान वर्ण d दूरी दूर हो जाएं

एक गैर-रिक्त स्ट्रिंग str और एक पूर्णांक k को देखते हुए, स्ट्रिंग को इस तरह पुनर्व्यवस्थित करें कि समान वर्ण एक दूसरे से कम से कम k दूरी पर हों।

सभी इनपुट स्ट्रिंग्स लोअरकेस अक्षरों में दी गई हैं। यदि स्ट्रिंग को पुनर्व्यवस्थित करना संभव नहीं है, तो एक खाली स्ट्रिंग "" लौटाएं।

उदाहरण 1:

str = “tutorialspoint”, k = 3

Answer: “tiotiotalnprsu”

समान वर्ण कम से कम 3 वर्ण की दूरी पर हैं।

str = "aabbcc", k = 3

Answer: "abcabc"

The same characters are at least 3 character distance apart.

उदाहरण 2

str = "aaabc", k = 3

Answer: ""

It is not possible to rearrange the string.

उदाहरण 3:

str = "aaadbbcc", k = 2

Answer: "abacabcd"

Another possible answer is: "abcabcda"

The same characters are at least 2 character distance apart.

उदाहरण

MAX = 128

# A structure to store a character 'char' and its frequency 'freq'
# in input string
class charFreq(object):
   def __init__(self,char,freq):
      self.c = char
      self.f = freq

# A utility function to swap two charFreq items.
def swap(x, y):
   return y, x

# A utility function
def toList(string):
   t = []
   for x in string:
      t.append(x)

   return t

# A utility function
def toString(l):
   return ''.join(l)

# A utility function to maxheapify the node freq[i] of a heap stored in freq[]
def maxHeapify(freq, i, heap_size):
   l = i*2 + 1
   r = i*2 + 2
   largest = i
   if l < heap_size and freq[l].f > freq[i].f:
      largest = l
   if r < heap_size and freq[r].f > freq[largest].f:
      largest = r
   if largest != i:
      freq[i], freq[largest] = swap(freq[i], freq[largest])
      maxHeapify(freq, largest, heap_size)

# A utility function to convert the array freq[] to a max heap
def buildHeap(freq, n):
   i = (n - 1)//2
   while i >= 0:
      maxHeapify(freq, i, n)
      i-=1

# A utility function to remove the max item or root from max heap
def extractMax(freq, heap_size):
   root = freq[0]
   if heap_size > 1:
      freq[0] = freq[heap_size-1]
      maxHeapify(freq, 0, heap_size-1)

return root

# The main function that rearranges input string 'str' such that
# two same characters become d distance away
def rearrange(string, d):
   # Find length of input string
   n = len(string)

   # Create an array to store all characters and their
   # frequencies in str[]
   freq = []
   for x in range(MAX):
      freq.append(charFreq(0,0))

   m = 0

   # Traverse the input string and store frequencies of all
   # characters in freq[] array.
   for i in range(n):
      x = ord(string[i])

      # If this character has occurred first time, increment m
      if freq[x].c == 0:
         freq[x].c = chr(x)
         m+=1

      freq[x].f+=1
      string[i] = '\0'

   # Build a max heap of all characters
   buildHeap(freq, MAX)

   # Now one by one extract all distinct characters from max heap
   # and put them back in str[] with the d distance constraint
   for i in range(m):
      x = extractMax(freq, MAX-i)

      # Find the first available position in str[]
      p = i
      while string[p] != '\0':
         p+=1

      # Fill x.c at p, p+d, p+2d, .. p+(f-1)d
      for k in range(x.f):

         # If the index goes beyond size, then string cannot
         # be rearranged.
         if p + d*k >= n:
            print ("It is not possible to rearrange the string.")
         return

      string[p + d*k] = x.c

   return toString(string)

string = "tutorialspoint"
print (rearrange(toList(string), 3) )

परिणाम

tiotiotalnprsu

  1. किसी दिए गए स्ट्रिंग के सभी क्रमपरिवर्तन मुद्रित करने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक स्ट्रिंग दी गई है जिसकी हमें स्ट्रिंग के सभी संभावित क्रमपरिवर्तन प्रदर्शित करने की आवश्यकता है। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # conversion def toString(List):    return &

  1. पायथन प्रोग्राम में असामान्य वर्णों के साथ संयोजित स्ट्रिंग

    हमने दो तार दिए हैं और हमारा लक्ष्य एक नई स्ट्रिंग प्राप्त करना है जिसमें दोनों तारों से अद्वितीय वर्ण हों। मान लीजिए, अगर हमारे पास दो तार हैं हफीज और करीम फिर, दो स्ट्रिंग्स से उत्पन्न होने वाली नई स्ट्रिंग hfzkrm . है . हम दो स्ट्रिंग्स से अलग-अलग कैरेक्टर प्राप्त करने का लक्ष्य रखते हैं। मेरे चर

  1. पायथन प्रोग्राम यह जांचने के लिए कि क्या एक स्ट्रिंग में सभी अद्वितीय वर्ण हैं

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग इनपुट को देखते हुए, हमें यह पता लगाना होगा कि किसी स्ट्रिंग में सभी अद्वितीय वर्ण हैं या नहीं। दृष्टिकोण हम बूलियन मानों की एक सरणी बनाएंगे, जहां इंडेक्स i पर वेरिएबल फ्लैग इंगित कर