From 455316f1396e98e46fdd43b7fad479b68da1eac0 Mon Sep 17 00:00:00 2001 From: verdant Date: Tue, 30 Jun 2026 12:11:38 +0800 Subject: Move from GitHub --- leetcode/0020/main.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 leetcode/0020/main.c (limited to 'leetcode/0020/main.c') diff --git a/leetcode/0020/main.c b/leetcode/0020/main.c new file mode 100644 index 0000000..cf3a4dd --- /dev/null +++ b/leetcode/0020/main.c @@ -0,0 +1,43 @@ +#include +#include +#include + +bool isValid(char *s) { + int n = strlen(s); + if (n < 2) + return false; + + char *stack = (char *)malloc(sizeof(char) * (n + 1)); + int top = -1; + + for (int i = 0; i < n; i++) { + char ch = s[i]; + + if (ch == '(' || ch == '[' || ch == '{') { + stack[++top] = ch; + } else { + if (top == -1) { + return false; + } + + char topChar = stack[top--]; + + if (ch == ')' && topChar != '(') { + free(stack); + return false; + } + if (ch == ']' && topChar != '[') { + free(stack); + return false; + } + if (ch == '}' && topChar != '{') { + free(stack); + return false; + } + } + } + + bool result = (top == -1); + free(stack); + return result; +} -- cgit v1.2.3