mardi 3 février 2026

Chuỗi chỉ có các ký tự : ( ) [ ]

 

🧠 Ý tưởng

Chuỗi chỉ có các ký tự :
( ) [ ]

Quy tắc:

  • ( phải đóng bằng )

  • [ phải đóng bằng ]

  • Đóng phải đúng loạiđúng thứ tự

  • Stack rỗng ở cuối → chuỗi chuẩn


✅ Thuật toán (simple & efficace)

  1. Duyệt từng ký tự trong chuỗi

  2. Nếu là ( hoặc [push vào stack

  3. Nếu là ) hoặc ] :

    • stack rỗng → ❌ sai

    • pop phần tử trên stack

    • kiểm tra có khớp không

  4. Kết thúc:

    • stack rỗng → ✅ chuẩn

    • còn phần tử → ❌ sai


💻 C# implementation

using System.Collections.Generic; public class BracketChecker { public bool Check(string str) { if (string.IsNullOrEmpty(str)) return true; Stack<char> stack = new Stack<char>(); foreach (char c in str) { if (c == '(' || c == '[') { stack.Push(c); } else if (c == ')' || c == ']') { if (stack.Count == 0) return false; char open = stack.Pop(); if (!IsMatching(open, c)) return false; } else { // nếu có ký tự khác (optionnel) return false; } } return stack.Count == 0; } private bool IsMatching(char open, char close) { return (open == '(' && close == ')') || (open == '[' && close == ']'); } }

🧪 Ví dụ test

Check("(()[]([]))") // true Check("([][])") // true Check("([)]") // false Check("(()") // false Check(")(") // false

⏱️ Complexité

  • Temps : O(n)

  • Mémoire : O(n) (stack)

Aucun commentaire:

Enregistrer un commentaire