this post was submitted on 15 Aug 2023
22 points (100.0% liked)
Programming Challenges
234 readers
1 users here now
Welcome to the programming.dev challenge community!
Three challenges will be posted every week to complete
- Tuesday (Easy)
- Thursday (Medium)
- Saturday (Hard)
Easy challenges will give 1 point, medium will give 2, and hard will give 3. If you have the fastest time or use the least amount of characters you will get a bonus point (in ties everyone gets the bonus point)
Exact duplicate solutions are not allowed and will not give you any points. Submissions on a challenge will be open for a week.
A leaderboard will be posted every month showing the top people for that month
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Here's an O(n) solution using a stack instead of repeated search & replace:
Haven't thoroughly thought the problem through (so I'm not 100% confident in the correctness of the solution), but the general intuition here is that pairs of brackets can only match up if they only have other matching pairs of brackets between them. You can deal with matching pairs of brackets on the fly simply by removing them, so there's actually no need for backtracking.
Golfed, just for fun:
This gave me the idea to do the same in C, but use the argument string itself as the stack to avoid any allocations. It could probably be further optimized.