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

डिक्रिप्टेड स्ट्रिंग के k-वें वर्ण का पता लगाएं - पायथन में सेट - 2


मान लीजिए कि हमारे पास एक एन्कोडेड स्ट्रिंग है जहां सबस्ट्रिंग के दोहराव को सबस्ट्रिंग के रूप में दर्शाया जाता है और उसके बाद सबस्ट्रिंग की गिनती होती है। उदाहरण के तौर पर, यदि स्ट्रिंग "pq2rs2" और k=5 है, तो आउटपुट 'r' होगा, ऐसा इसलिए है क्योंकि डिक्रिप्टेड स्ट्रिंग "pqpqrsrs" है और 5वां वर्ण 'r' है। हमें यह ध्यान रखना होगा कि एन्क्रिप्टेड सबस्ट्रिंग की आवृत्ति एक से अधिक अंकों की हो सकती है।

इसलिए, यदि इनपुट स्ट्रिंग ="pq4r2ts3" और k =11 जैसा है, तो आउटपुट i होगा, क्योंकि स्ट्रिंग pqpqpqpqrrtststs

है

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एन्कोडेड :=रिक्त स्ट्रिंग

  • घटना :=0, मैं :=0

  • जबकि मैं

    • अस्थायी:=रिक्त स्ट्रिंग

    • घटना :=0

  • जबकि मैं

    • अस्थायी:=अस्थायी + str[i]

    • मैं :=मैं + 1

  • जबकि मैं

    • घटना:=घटना * 10 + ASCII (str[i]) - ASCII ('0')

    • मैं :=मैं + 1

  • j के लिए श्रेणी 1 से घटना + 1 तक, 1 की वृद्धि करें

    • एन्कोडेड:=एन्कोडेड + अस्थायी

  • अगर घटना 0 के समान है, तो

    • एन्कोडेड:=एन्कोडेड + अस्थायी

  • वापसी एन्कोडेड [के -1]

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def find_kth_char(str, k):
   encoded = ""
   occurrence = 0
   i = 0
   while i < len(str):
      temp = ""
      occurrence = 0
      while (i < len(str) and ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z')):
         temp += str[i]
         i += 1
      while (i < len(str) and ord(str[i]) >= ord('1') and ord(str[i]) <= ord('9')):
         occurrence = occurrence * 10 + ord(str[i]) - ord('0')
         i += 1
      for j in range(1, occurrence + 1, 1):
         encoded += temp
   if occurrence == 0:
      encoded += temp
   return encoded[k - 1]

str = "pq4r2ts3"
k = 11
print(find_kth_char(str, k))

इनपुट

"pq4r2ts3", 11

आउटपुट

t

  1. हम पायथन में एक स्ट्रिंग को एक सेट में कैसे परिवर्तित करते हैं?

    पायथन की मानक लाइब्रेरी में बिल्ट-इन फंक्शन सेट () होता है जो एक चलने योग्य को सेट में बदल देता है। एक सेट ऑब्जेक्ट में बार-बार आइटम नहीं होते हैं। इसलिए, यदि किसी स्ट्रिंग में कोई वर्ण एक से अधिक बार होता है, तो वह वर्ण सेट ऑब्जेक्ट में केवल एक बार दिखाई देता है। फिर से, वर्ण उसी क्रम में प्रकट नही

  1. कैसे अजगर में एक स्ट्रिंग में सबस्ट्रिंग की nth घटना को खोजने के लिए?

    आप अधिकतम n+1 विभाजन के साथ सबस्ट्रिंग पर विभाजित करके एक स्ट्रिंग में एक सबस्ट्रिंग की nth घटना पा सकते हैं। यदि परिणामी सूची का आकार n+1 से बड़ा है, तो इसका मतलब है कि सबस्ट्रिंग n बार से अधिक होता है। इसका सूचकांक एक साधारण सूत्र द्वारा पाया जा सकता है, मूल स्ट्रिंग की लंबाई - अंतिम विभाजित भाग क

  1. पायथन में एक स्ट्रिंग में एक सबस्ट्रिंग की अंतिम घटना की अनुक्रमणिका कैसे खोजें?

    पायथन में एक rfind () विधि है जो एक स्ट्रिंग के अंत से एक सबस्ट्रिंग की घटना के लिए खोज करती है। यदि पाया जाता है तो यह अंतिम घटना की अनुक्रमणिका देता है, अन्यथा -1। आप इसे इस प्रकार उपयोग कर सकते हैं: >>> 'some of the some'.rfind('some') 12 >>> 'some of the som