สมมติว่าเรามีค่า n เราต้องสร้างวงเล็บที่มีรูปแบบถูกต้องที่เป็นไปได้ทั้งหมดซึ่งมีวงเล็บเปิดและปิดจำนวน n รายการ ดังนั้นหากค่าของ n =3 วงเล็บจะเป็น ["()()()","()(())","(())()","(()()) ","((()))"]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดวิธีการที่เรียกว่า genParenthesisRec() การดำเนินการนี้ใช้สตริง temp ซ้าย ขวา และอาร์เรย์ผลลัพธ์ อาร์เรย์ผลลัพธ์เริ่มต้นว่างเปล่า
- ฟังก์ชัน genParenthesisRec จะทำงานดังนี้
- ถ้า ซ้าย =0 และ ขวา :=0 ให้ใส่ temp ลงในผลลัพธ์ แล้วส่งคืน
- ถ้าเหลือ> 0
- getParenthesisRec(ซ้าย – 1, ขวา, อุณหภูมิ + “(”, ผลลัพธ์)
- ถ้าใช่> ซ้าย
- getParenthesisRec(ซ้าย ขวา – 1 อุณหภูมิ + “)” ผลลัพธ์)
ตัวอย่าง(Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
คลาส Solution(object):def generateParenthesis(self, n):""" :type n:int :rtype:List[str] """ result =[] self.generateParenthesisUtil(n,n,"", ผลลัพธ์) ส่งคืนผลลัพธ์ def def generateParenthesisUtil (ตัวเอง ซ้าย ขวา อุณหภูมิ ผลลัพธ์):if left ==0 and right ==0:result.append(temp) return if left>0:self.generateParenthesisUtil(left-1,right ,temp+'(',result) if right> left:self.generateParenthesisUtil(left, right-1, temp + ')', result)ob =Solution()print(ob.generateParenthesis(4))
อินพุต
4