मान लीजिए कि हमारे पास एक लक्ष्य पार्सर है जो किसी दिए गए स्ट्रिंग कमांड की व्याख्या कर सकता है। एक कमांड में होते हैं
-
एक अक्षर "G",
-
कोष्ठक खोलना और बंद करना "()"
-
और/या "(अल)" किसी क्रम में।
हमारा लक्ष्य पार्सर "जी" को स्ट्रिंग "जी", "()" के रूप में "ओ" और "(अल)" स्ट्रिंग "अल" के रूप में व्याख्या करेगा। अंत में व्याख्या किए गए तारों को मूल क्रम में जोड़ दिया जाता है। इसलिए यदि हमारे पास स्ट्रिंग कमांड है, तो हमें लक्ष्य पार्सर की कमांड की व्याख्या को खोजना होगा।
इसलिए, यदि इनपुट कमांड ="जी () () () (अल) (अल)" जैसा है, तो आउटपुट गूलाल होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
s:=रिक्त स्ट्रिंग
-
मैं के लिए 0 से लेकर कमांड के आकार -1 तक, करो
-
यदि कमांड [i] "(" के समान नहीं है और कमांड [i] ")" के समान नहीं है, तो
-
s :=s concatenate कमांड[i]
-
-
अगर कमांड [i] "(" के समान है और कमांड [i+1] समान है ")" और i+1
-
s :=s 'o' को जोड़ना
-
-
अगर कमांड [i] "(" के समान है, तो
-
अगले पुनरावृत्ति के लिए जाएं
-
-
अगर कमांड [i] ")" के समान है, तो
-
अगले पुनरावृत्ति के लिए जाएं
-
-
-
वापसी एस
उदाहरण (पायथन)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(command):
s=""
for i in range(len(command)):
if command[i]!="(" and command[i]!=")":
s+=command[i]
if command[i]=="(" and command[i+1]==")" and i+1<len(command):
s+='o'
if command[i]=="(":
continue
if command[i]==")":
continue
return s
command = "G()()()(al)(al)"
print(solve(command)) इनपुट
"G()()()(al)(al)"
आउटपुट
Goooalal