मान लीजिए कि हमारे पास एक एन्कोडेड स्ट्रिंग है जहां सबस्ट्रिंग के दोहराव को सबस्ट्रिंग के रूप में दर्शाया जाता है और उसके बाद सबस्ट्रिंग की गिनती होती है। उदाहरण के तौर पर, यदि स्ट्रिंग "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