मान लीजिए कि हमारे पास एक स्ट्रिंग 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 मानों को रखने के लिए एक नक्शा बनाएं
-
उत्तर:=0, और नक्शा ['']:='', विज्ञापन मैं:=स्ट्रिंग की लंबाई - 1
-
जबकि मैं> 0
-
अगर s[i] # है, तो
-
अस्थायी:=""
-
j के लिए :=i – 2 to i, temp :=temp + s[j]
-
उत्तर:=नक्शा [अस्थायी] + उत्तर
-
मुझे 3 से घटाएं
-
-
अन्यथा उत्तर:=नक्शा [एस [i]] + उत्तर, और 1 से घटाएं
-
-
वापसी उत्तर
उदाहरण (पायथन)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
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