मान लीजिए हमारे पास एक एन्कोडेड स्ट्रिंग है जहां उपस्ट्रिंग के दोहराव को उपस्ट्रिंग के बाद उपस्ट्रिंग की गिनती के रूप में दर्शाया गया है। उदाहरण के लिए, यदि स्ट्रिंग "pq2rs2" है और k=5, तो आउटपुट 'r' होगा, क्योंकि डिक्रिप्टेड स्ट्रिंग "pqpqrsrs" है और 5वां वर्ण 'r' है। हमें इस बात का ध्यान रखना है कि एन्क्रिप्टेड उपस्ट्रिंग की आवृत्ति एक से अधिक अंक की हो सकती है।
तो, यदि इनपुट स्ट्रिंग = "pq4r2ts3" और k = 11 की तरह है, तो आउटपुट t होगा, क्योंकि स्ट्रिंग pqpqpqpqrrtststs है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
encoded := खाली स्ट्रिंग
occurrence := 0, i := 0
जब i < str का आकार, करें
temp := खाली स्ट्रिंग
occurrence := 0
जब i < str का आकार और str[i] एक वर्णमाला है, करें
temp := temp + str[i]
i := i + 1
जब i < str का आकार और str[i] एक अंक है, करें
occurrence := occurrence * 10 + ASCII of (str[i]) - ASCII of ('0')
i := i + 1
j के लिए 1 से occurrence + 1 की सीमा में, 1 से बढ़ाएं, करें
encoded := encoded + temp
यदि occurrence, 0 के समान है, तो
encoded := encoded + temp
encoded[k - 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