मान लीजिए हमारे पास एक स्ट्रिंग s है जो डिजिट्स ('0' - '9') और '#' से बनी है। हमें s को निम्नानुसार अंग्रेजी लोअरकेस कैरेक्टर्स में मैप करना है:
- कैरेक्टर्स ('a' से 'i') को ('1' से '9') द्वारा दर्शाया जाता है।
- कैरेक्टर्स ('j' से 'z') को ('10#' से '26#') द्वारा दर्शाया जाता है।
हमें मैपिंग के बाद बनी स्ट्रिंग ढूंढनी है। हम यह मान रहे हैं कि एक यूनिक मैपिंग हमेशा मौजूद होगी। इसलिए यदि इनपुट "10#11#12" जैसा है, तो यह "jkab" होगा। जैसे 10# j है, 11# k है, 1 a है और 2 b है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- सभी कैरेक्टर्स और उनके संबंधित ASCII मानों को रखने के लिए एक मैप बनाएं
- ans := 0, और map[''] := '', और i := स्ट्रिंग की लंबाई - 1
- जब तक i >= 0
- यदि s[i] # है, तो
- temp := ""
- j := i - 2 से i तक, temp := temp + s[j]
- ans := map[str(temp)] + ans
- i को 3 से घटाएं
- अन्यथा ans := map[s[i]] + ans, और i को 1 से घटाएं
- यदि s[i] # है, तो
- ans लौटाएं
उदाहरण (पायथन)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class Solution(object):
def freqAlphabets(self, s):
m = {}
x = 'a'
for i in range(1, 27):
m[str(i)] = x
x = chr(ord(x) + 1)
ans = ""
m[''] = ''
i = len(s) - 1
while i >= 0:
if s[i] == "#":
temp = ""
for j in range(i - 2, i):
temp += s[j]
ans = m[str(temp)] + ans
i -= 3
else:
ans = m[s[i]] + ans
i -= 1
return ans
ob1 = Solution()
print(ob1.freqAlphabets("17#123#5621#"))
इनपुट
"17#123#5621#"
आउटपुट
qawefu