สมมติว่าเรามีตัวแยกวิเคราะห์เป้าหมายที่สามารถตีความคำสั่งสตริงที่กำหนดได้ คำสั่งประกอบด้วย
-
ตัวอักษร "G"
-
วงเล็บเปิดและปิด "()"
-
และ/หรือ "(อัล)" ตามลำดับ
ตัวแยกวิเคราะห์เป้าหมายของเราจะตีความ "G" เป็นสตริง "G", "()" เป็น "o" และ "(al)" เป็นสตริง "al" ท้ายที่สุดแล้ว สตริงที่ตีความจะถูกต่อกันในลำดับเดิม ดังนั้นถ้าเรามีคำสั่ง string เราต้องหาการตีความคำสั่งของ Goal Parser
ดังนั้น หากอินพุตเป็นเหมือน command ="G()()()(al)(al)" ผลลัพธ์จะเป็น Goooalal
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
s:=สตริงว่าง
-
สำหรับฉันในช่วง 0 ถึงขนาดของคำสั่ง - 1 ทำ
-
ถ้า command[i] ไม่เหมือนกับ "(" และ command[i] ไม่เหมือนกับ ")" ดังนั้น
-
s :=s concatenate command[i]
-
-
ถ้า command[i] เหมือนกับ "(" และ command[i+1] เหมือนกับ ")" และ i+1
-
s :=s ต่อ 'o'
-
-
ถ้า command[i] เหมือนกับ "(" แล้ว
-
ไปทำซ้ำต่อไป
-
-
ถ้า command[i] เหมือนกับ ")" แล้ว
-
ไปทำซ้ำต่อไป
-
-
-
ผลตอบแทน s
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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