From 9de9abad07b98902ab6ee5edd7fc2cbf337335c6 Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Fri, 23 May 2025 15:03:53 +0530 Subject: [PATCH 01/55] olution and Readme file updated with all the terms --- .../0000-0099/0002.Add Two Numbers/README.md | 49 +++++++++++++++++++ .../0002.Add Two Numbers/README_EN.md | 48 ++++++++++++++++++ .../0000-0099/0002.Add Two Numbers/Solution.c | 40 +++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 solution/0000-0099/0002.Add Two Numbers/Solution.c diff --git a/solution/0000-0099/0002.Add Two Numbers/README.md b/solution/0000-0099/0002.Add Two Numbers/README.md index 3806f64b53d17..9e9f0a440e250 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README.md +++ b/solution/0000-0099/0002.Add Two Numbers/README.md @@ -494,6 +494,55 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi result = aggregate ``` +#### C + ``` c + + /** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + +struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) +{ + struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); + dummy->val = 0; + dummy->next = NULL; + struct ListNode *curr = dummy; + int carry = 0; + + while (l1 != NULL || l2 != NULL || carry != 0) + { + int sum = carry; + if (l1 != NULL) + { + sum += l1->val; + l1 = l1->next; + } + if (l2 != NULL) + { + sum += l2->val; + l2 = l2->next; + } + + carry = sum / 10; + int val = sum % 10; + + struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); + newNode->val = val; + newNode->next = NULL; + curr->next = newNode; + curr = curr->next; + } + + struct ListNode *result = dummy->next; + free(dummy); + return result; +} + ``` + diff --git a/solution/0000-0099/0002.Add Two Numbers/README_EN.md b/solution/0000-0099/0002.Add Two Numbers/README_EN.md index f6878f0937322..37dbc7e135713 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README_EN.md +++ b/solution/0000-0099/0002.Add Two Numbers/README_EN.md @@ -490,6 +490,54 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi result = aggregate ``` +#### C +```c +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + +struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) +{ + struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); + dummy->val = 0; + dummy->next = NULL; + struct ListNode *curr = dummy; + int carry = 0; + + while (l1 != NULL || l2 != NULL || carry != 0) + { + int sum = carry; + if (l1 != NULL) + { + sum += l1->val; + l1 = l1->next; + } + if (l2 != NULL) + { + sum += l2->val; + l2 = l2->next; + } + + carry = sum / 10; + int val = sum % 10; + + struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); + newNode->val = val; + newNode->next = NULL; + curr->next = newNode; + curr = curr->next; + } + + struct ListNode *result = dummy->next; + free(dummy); + return result; +} +``` + diff --git a/solution/0000-0099/0002.Add Two Numbers/Solution.c b/solution/0000-0099/0002.Add Two Numbers/Solution.c new file mode 100644 index 0000000000000..08fd89cf9ded0 --- /dev/null +++ b/solution/0000-0099/0002.Add Two Numbers/Solution.c @@ -0,0 +1,40 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + +struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { + struct ListNode* dummy = (struct ListNode*) malloc(sizeof(struct ListNode)); + dummy->val = 0; + dummy->next = NULL; + struct ListNode* curr = dummy; + int carry = 0; + + while (l1 != NULL || l2 != NULL || carry != 0) { + int sum = carry; + if (l1 != NULL) { + sum += l1->val; + l1 = l1->next; + } + if (l2 != NULL) { + sum += l2->val; + l2 = l2->next; + } + + carry = sum / 10; + int val = sum % 10; + + struct ListNode* newNode = (struct ListNode*) malloc(sizeof(struct ListNode)); + newNode->val = val; + newNode->next = NULL; + curr->next = newNode; + curr = curr->next; + } + + struct ListNode* result = dummy->next; + free(dummy); + return result; +} \ No newline at end of file From 2e3bd2ffe029e81fb10d9cceca9dfb75e6b5b5e5 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Fri, 23 May 2025 09:57:57 +0000 Subject: [PATCH 02/55] style: format code and docs with prettier --- .../0000-0099/0002.Add Two Numbers/README.md | 85 ++++++++++--------- .../0002.Add Two Numbers/README_EN.md | 7 +- 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/solution/0000-0099/0002.Add Two Numbers/README.md b/solution/0000-0099/0002.Add Two Numbers/README.md index 9e9f0a440e250..8f46cb7b1e210 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README.md +++ b/solution/0000-0099/0002.Add Two Numbers/README.md @@ -495,53 +495,54 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi ``` #### C - ``` c - /** - * Definition for singly-linked list. - * struct ListNode { - * int val; - * struct ListNode *next; - * }; - */ +```c + +/** +* Definition for singly-linked list. +* struct ListNode { +* int val; +* struct ListNode *next; +* }; +*/ struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) { - struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); - dummy->val = 0; - dummy->next = NULL; - struct ListNode *curr = dummy; - int carry = 0; - - while (l1 != NULL || l2 != NULL || carry != 0) - { - int sum = carry; - if (l1 != NULL) - { - sum += l1->val; - l1 = l1->next; - } - if (l2 != NULL) - { - sum += l2->val; - l2 = l2->next; - } - - carry = sum / 10; - int val = sum % 10; - - struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); - newNode->val = val; - newNode->next = NULL; - curr->next = newNode; - curr = curr->next; - } - - struct ListNode *result = dummy->next; - free(dummy); - return result; + struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); + dummy->val = 0; + dummy->next = NULL; + struct ListNode *curr = dummy; + int carry = 0; + + while (l1 != NULL || l2 != NULL || carry != 0) + { + int sum = carry; + if (l1 != NULL) + { + sum += l1->val; + l1 = l1->next; + } + if (l2 != NULL) + { + sum += l2->val; + l2 = l2->next; + } + + carry = sum / 10; + int val = sum % 10; + + struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); + newNode->val = val; + newNode->next = NULL; + curr->next = newNode; + curr = curr->next; + } + + struct ListNode *result = dummy->next; + free(dummy); + return result; } - ``` +``` diff --git a/solution/0000-0099/0002.Add Two Numbers/README_EN.md b/solution/0000-0099/0002.Add Two Numbers/README_EN.md index 37dbc7e135713..e9fc9a9bbbc8a 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README_EN.md +++ b/solution/0000-0099/0002.Add Two Numbers/README_EN.md @@ -490,7 +490,8 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi result = aggregate ``` -#### C +#### C + ```c /** * Definition for singly-linked list. @@ -533,9 +534,9 @@ struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) } struct ListNode *result = dummy->next; - free(dummy); + free(dummy); return result; -} +} ``` From 4e9aab5c4311ec80adcfc3789175e9d9683655af Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 23 May 2025 20:16:01 +0800 Subject: [PATCH 03/55] Update README.md --- .../0000-0099/0002.Add Two Numbers/README.md | 80 +++++++++---------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/solution/0000-0099/0002.Add Two Numbers/README.md b/solution/0000-0099/0002.Add Two Numbers/README.md index 8f46cb7b1e210..2b908b24a55a7 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README.md +++ b/solution/0000-0099/0002.Add Two Numbers/README.md @@ -499,48 +499,44 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi ```c /** -* Definition for singly-linked list. -* struct ListNode { -* int val; -* struct ListNode *next; -* }; -*/ - -struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) -{ - struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); - dummy->val = 0; - dummy->next = NULL; - struct ListNode *curr = dummy; - int carry = 0; - - while (l1 != NULL || l2 != NULL || carry != 0) - { - int sum = carry; - if (l1 != NULL) - { - sum += l1->val; - l1 = l1->next; - } - if (l2 != NULL) - { - sum += l2->val; - l2 = l2->next; - } - - carry = sum / 10; - int val = sum % 10; - - struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); - newNode->val = val; - newNode->next = NULL; - curr->next = newNode; - curr = curr->next; - } - - struct ListNode *result = dummy->next; - free(dummy); - return result; + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + +struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { + struct ListNode* dummy = (struct ListNode*) malloc(sizeof(struct ListNode)); + dummy->val = 0; + dummy->next = NULL; + struct ListNode* curr = dummy; + int carry = 0; + + while (l1 != NULL || l2 != NULL || carry != 0) { + int sum = carry; + if (l1 != NULL) { + sum += l1->val; + l1 = l1->next; + } + if (l2 != NULL) { + sum += l2->val; + l2 = l2->next; + } + + carry = sum / 10; + int val = sum % 10; + + struct ListNode* newNode = (struct ListNode*) malloc(sizeof(struct ListNode)); + newNode->val = val; + newNode->next = NULL; + curr->next = newNode; + curr = curr->next; + } + + struct ListNode* result = dummy->next; + free(dummy); + return result; } ``` From 6b22bb92025770a5dc3faee76932b9fc9956669d Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 23 May 2025 20:16:29 +0800 Subject: [PATCH 04/55] Update README_EN.md --- .../0002.Add Two Numbers/README_EN.md | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/solution/0000-0099/0002.Add Two Numbers/README_EN.md b/solution/0000-0099/0002.Add Two Numbers/README_EN.md index e9fc9a9bbbc8a..6274e8c2ad5e6 100644 --- a/solution/0000-0099/0002.Add Two Numbers/README_EN.md +++ b/solution/0000-0099/0002.Add Two Numbers/README_EN.md @@ -493,6 +493,7 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi #### C ```c + /** * Definition for singly-linked list. * struct ListNode { @@ -501,24 +502,20 @@ proc addTwoNumbers(l1: var SinglyLinkedList, l2: var SinglyLinkedList): SinglyLi * }; */ -struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) -{ - struct ListNode *dummy = (struct ListNode *)malloc(sizeof(struct ListNode)); +struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { + struct ListNode* dummy = (struct ListNode*) malloc(sizeof(struct ListNode)); dummy->val = 0; dummy->next = NULL; - struct ListNode *curr = dummy; + struct ListNode* curr = dummy; int carry = 0; - while (l1 != NULL || l2 != NULL || carry != 0) - { + while (l1 != NULL || l2 != NULL || carry != 0) { int sum = carry; - if (l1 != NULL) - { + if (l1 != NULL) { sum += l1->val; l1 = l1->next; } - if (l2 != NULL) - { + if (l2 != NULL) { sum += l2->val; l2 = l2->next; } @@ -526,14 +523,14 @@ struct ListNode *addTwoNumbers(struct ListNode *l1, struct ListNode *l2) carry = sum / 10; int val = sum % 10; - struct ListNode *newNode = (struct ListNode *)malloc(sizeof(struct ListNode)); + struct ListNode* newNode = (struct ListNode*) malloc(sizeof(struct ListNode)); newNode->val = val; newNode->next = NULL; curr->next = newNode; curr = curr->next; } - struct ListNode *result = dummy->next; + struct ListNode* result = dummy->next; free(dummy); return result; } From bb9981e7b4757a58f0d5c035ec769a467ab3bfb1 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 23 May 2025 20:16:53 +0800 Subject: [PATCH 05/55] Update Solution.c --- solution/0000-0099/0002.Add Two Numbers/Solution.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solution/0000-0099/0002.Add Two Numbers/Solution.c b/solution/0000-0099/0002.Add Two Numbers/Solution.c index 08fd89cf9ded0..0ca00b4bd6752 100644 --- a/solution/0000-0099/0002.Add Two Numbers/Solution.c +++ b/solution/0000-0099/0002.Add Two Numbers/Solution.c @@ -1,3 +1,4 @@ + /** * Definition for singly-linked list. * struct ListNode { @@ -37,4 +38,4 @@ struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { struct ListNode* result = dummy->next; free(dummy); return result; -} \ No newline at end of file +} From c05b7a5f5d666c2bf8618e610fd393c23d263f66 Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Fri, 23 May 2025 21:30:10 +0530 Subject: [PATCH 06/55] solution of 0003 done in c --- .../README.md | 28 ++++++++++++++++++ .../README_EN.md | 29 +++++++++++++++++++ .../Solution.c | 22 ++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md index f502d2ad9b027..c2315cb3acd0d 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md @@ -300,6 +300,34 @@ class Solution { } ``` +#### C + +``` c +int lengthOfLongestSubstring(char *s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); + + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char)c]++; + + while (freq[(unsigned char)c] > 1) { + freq[(unsigned char)s[l]]--; + l++; + } + + if (ans < r - l + 1) { + ans = r - l + 1; + } + } + + return ans; +} + +``` + diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md index 69d92379be2a3..655fb8009f571 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md @@ -298,6 +298,35 @@ class Solution { } ``` +#### C + +```c + +int lengthOfLongestSubstring(char *s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); + + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char)c]++; + + while (freq[(unsigned char)c] > 1) { + freq[(unsigned char)s[l]]--; + l++; + } + + if (ans < r - l + 1) { + ans = r - l + 1; + } + } + + return ans; +} + +``` + diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c new file mode 100644 index 0000000000000..5024b4aa63f85 --- /dev/null +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c @@ -0,0 +1,22 @@ +int lengthOfLongestSubstring(char *s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); + + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char)c]++; + + while (freq[(unsigned char)c] > 1) { + freq[(unsigned char)s[l]]--; + l++; + } + + if (ans < r - l + 1) { + ans = r - l + 1; + } + } + + return ans; +} From bc3ef008c0b790f1726f6351f2cdb5408c54500c Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Fri, 23 May 2025 21:35:13 +0530 Subject: [PATCH 07/55] 0004 done in c language --- .../README.md | 30 +++++++++++++++++++ .../README_EN.md | 30 +++++++++++++++++++ .../Solution.c | 25 ++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md b/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md index a0c5af52f0caa..e6cd803ed7bc3 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md @@ -350,6 +350,36 @@ proc medianOfTwoSortedArrays(nums1: seq[int], nums2: seq[int]): float = # echo medianOfTwoSortedArrays(arrA, arrB) ``` +#### C + +```c +int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; + + int p = k / 2; + + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); +} + +double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; +} +``` + diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md index 15b73ee6ff6f0..dbdb35f892f2d 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md @@ -346,6 +346,36 @@ proc medianOfTwoSortedArrays(nums1: seq[int], nums2: seq[int]): float = # echo medianOfTwoSortedArrays(arrA, arrB) ``` +#### C + +``` c +int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; + + int p = k / 2; + + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); +} + +double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; +} +``` + diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c b/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c new file mode 100644 index 0000000000000..4995edf2c1be7 --- /dev/null +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c @@ -0,0 +1,25 @@ +int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; + + int p = k / 2; + + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); +} + +double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; +} \ No newline at end of file From c154596d5daa9a95eb7d7c3c961f767b434dd963 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Fri, 23 May 2025 16:16:08 +0000 Subject: [PATCH 08/55] style: format code and docs with prettier --- .../README.md | 2 +- .../README_EN.md | 2 +- .../0000-0099/0004.Median of Two Sorted Arrays/README_EN.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md index c2315cb3acd0d..d0e50aebd708f 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md @@ -302,7 +302,7 @@ class Solution { #### C -``` c +```c int lengthOfLongestSubstring(char *s) { int freq[256] = {0}; int l = 0, r = 0; diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md index 655fb8009f571..7e14e65d4f0bc 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md @@ -300,7 +300,7 @@ class Solution { #### C -```c +```c int lengthOfLongestSubstring(char *s) { int freq[256] = {0}; diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md index dbdb35f892f2d..484169b1434df 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md @@ -348,7 +348,7 @@ proc medianOfTwoSortedArrays(nums1: seq[int], nums2: seq[int]): float = #### C -``` c +```c int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { if (i >= m) return nums2[j + k - 1]; From f6095308c565be9ec716eb897e0474723da7f70d Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:50:56 +0800 Subject: [PATCH 09/55] Update README.md --- .../README.md | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md index d0e50aebd708f..d95ea8a5d77a9 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README.md @@ -303,29 +303,28 @@ class Solution { #### C ```c -int lengthOfLongestSubstring(char *s) { - int freq[256] = {0}; - int l = 0, r = 0; - int ans = 0; - int len = strlen(s); - - for (r = 0; r < len; r++) { - char c = s[r]; - freq[(unsigned char)c]++; - - while (freq[(unsigned char)c] > 1) { - freq[(unsigned char)s[l]]--; - l++; - } +int lengthOfLongestSubstring(char* s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); + + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char) c]++; + + while (freq[(unsigned char) c] > 1) { + freq[(unsigned char) s[l]]--; + l++; + } - if (ans < r - l + 1) { - ans = r - l + 1; + if (ans < r - l + 1) { + ans = r - l + 1; + } } - } - return ans; + return ans; } - ``` From 377d9dd00ed86b7e217770d5b4c11608e0145881 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:51:12 +0800 Subject: [PATCH 10/55] Update README_EN.md --- .../README_EN.md | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md index 7e14e65d4f0bc..16624fcc16b80 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/README_EN.md @@ -301,30 +301,28 @@ class Solution { #### C ```c +int lengthOfLongestSubstring(char* s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); + + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char) c]++; + + while (freq[(unsigned char) c] > 1) { + freq[(unsigned char) s[l]]--; + l++; + } -int lengthOfLongestSubstring(char *s) { - int freq[256] = {0}; - int l = 0, r = 0; - int ans = 0; - int len = strlen(s); - - for (r = 0; r < len; r++) { - char c = s[r]; - freq[(unsigned char)c]++; - - while (freq[(unsigned char)c] > 1) { - freq[(unsigned char)s[l]]--; - l++; - } - - if (ans < r - l + 1) { - ans = r - l + 1; + if (ans < r - l + 1) { + ans = r - l + 1; + } } - } - return ans; + return ans; } - ``` From 60538706faa6815ae547d057aca8caaff4547ead Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:51:27 +0800 Subject: [PATCH 11/55] Update Solution.c --- .../Solution.c | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c index 5024b4aa63f85..673e098af92ac 100644 --- a/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c +++ b/solution/0000-0099/0003.Longest Substring Without Repeating Characters/Solution.c @@ -1,22 +1,22 @@ -int lengthOfLongestSubstring(char *s) { - int freq[256] = {0}; - int l = 0, r = 0; - int ans = 0; - int len = strlen(s); +int lengthOfLongestSubstring(char* s) { + int freq[256] = {0}; + int l = 0, r = 0; + int ans = 0; + int len = strlen(s); - for (r = 0; r < len; r++) { - char c = s[r]; - freq[(unsigned char)c]++; + for (r = 0; r < len; r++) { + char c = s[r]; + freq[(unsigned char) c]++; - while (freq[(unsigned char)c] > 1) { - freq[(unsigned char)s[l]]--; - l++; - } + while (freq[(unsigned char) c] > 1) { + freq[(unsigned char) s[l]]--; + l++; + } - if (ans < r - l + 1) { - ans = r - l + 1; + if (ans < r - l + 1) { + ans = r - l + 1; + } } - } - return ans; + return ans; } From 77e281bc01dd71919bd15f89700df77e588e7b0c Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:52:56 +0800 Subject: [PATCH 12/55] Update README.md --- .../README.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md b/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md index e6cd803ed7bc3..b6a21c5b7e751 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/README.md @@ -353,30 +353,30 @@ proc medianOfTwoSortedArrays(nums1: seq[int], nums2: seq[int]): float = #### C ```c -int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { - if (i >= m) - return nums2[j + k - 1]; - if (j >= n) - return nums1[i + k - 1]; - if (k == 1) - return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; - - int p = k / 2; - - int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; - int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; - - if (x < y) - return findKth(nums1, m, i + p, nums2, n, j, k - p); - else - return findKth(nums1, m, i, nums2, n, j + p, k - p); +int findKth(int* nums1, int m, int i, int* nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; + + int p = k / 2; + + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); } -double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { - int total = m + n; - int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); - int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); - return (a + b) / 2.0; +double findMedianSortedArrays(int* nums1, int m, int* nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; } ``` From 90bb3044ce3c3f7346fdc1216f5f6255fbc27e9a Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:53:12 +0800 Subject: [PATCH 13/55] Update README_EN.md --- .../README_EN.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md index 484169b1434df..2896e96ddc3af 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/README_EN.md @@ -349,30 +349,30 @@ proc medianOfTwoSortedArrays(nums1: seq[int], nums2: seq[int]): float = #### C ```c -int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { - if (i >= m) - return nums2[j + k - 1]; - if (j >= n) - return nums1[i + k - 1]; - if (k == 1) - return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; - - int p = k / 2; - - int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; - int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; - - if (x < y) - return findKth(nums1, m, i + p, nums2, n, j, k - p); - else - return findKth(nums1, m, i, nums2, n, j + p, k - p); +int findKth(int* nums1, int m, int i, int* nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; + + int p = k / 2; + + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); } -double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { - int total = m + n; - int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); - int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); - return (a + b) / 2.0; +double findMedianSortedArrays(int* nums1, int m, int* nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; } ``` From 63a213f06e5db54c84a76bbebd55691fd30e2574 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 26 May 2025 08:53:28 +0800 Subject: [PATCH 14/55] Update Solution.c --- .../Solution.c | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c b/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c index 4995edf2c1be7..2786c7ef9bfd8 100644 --- a/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c +++ b/solution/0000-0099/0004.Median of Two Sorted Arrays/Solution.c @@ -1,25 +1,25 @@ -int findKth(int *nums1, int m, int i, int *nums2, int n, int j, int k) { - if (i >= m) - return nums2[j + k - 1]; - if (j >= n) - return nums1[i + k - 1]; - if (k == 1) - return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; +int findKth(int* nums1, int m, int i, int* nums2, int n, int j, int k) { + if (i >= m) + return nums2[j + k - 1]; + if (j >= n) + return nums1[i + k - 1]; + if (k == 1) + return nums1[i] < nums2[j] ? nums1[i] : nums2[j]; - int p = k / 2; + int p = k / 2; - int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; - int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; + int x = (i + p - 1 < m) ? nums1[i + p - 1] : INT_MAX; + int y = (j + p - 1 < n) ? nums2[j + p - 1] : INT_MAX; - if (x < y) - return findKth(nums1, m, i + p, nums2, n, j, k - p); - else - return findKth(nums1, m, i, nums2, n, j + p, k - p); + if (x < y) + return findKth(nums1, m, i + p, nums2, n, j, k - p); + else + return findKth(nums1, m, i, nums2, n, j + p, k - p); } -double findMedianSortedArrays(int *nums1, int m, int *nums2, int n) { - int total = m + n; - int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); - int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); - return (a + b) / 2.0; -} \ No newline at end of file +double findMedianSortedArrays(int* nums1, int m, int* nums2, int n) { + int total = m + n; + int a = findKth(nums1, m, 0, nums2, n, 0, (total + 1) / 2); + int b = findKth(nums1, m, 0, nums2, n, 0, (total + 2) / 2); + return (a + b) / 2.0; +} From c20743725136b467890b64f01052fba4a84345a2 Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Tue, 3 Jun 2025 12:35:22 +0530 Subject: [PATCH 15/55] 0005 and 0006 done in c language --- .../README.md | 50 +++++++++++++++++++ .../README_EN.md | 49 ++++++++++++++++++ .../Solution.c | 45 +++++++++++++++++ .../0006.Zigzag Conversion/README.md | 34 +++++++++++++ .../0006.Zigzag Conversion/README_EN.md | 34 +++++++++++++ .../0006.Zigzag Conversion/Solution.c | 29 +++++++++++ 6 files changed, 241 insertions(+) create mode 100644 solution/0000-0099/0005.Longest Palindromic Substring/Solution.c create mode 100644 solution/0000-0099/0006.Zigzag Conversion/Solution.c diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README.md b/solution/0000-0099/0005.Longest Palindromic Substring/README.md index 11a6b7df01a67..be99158e336bb 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README.md @@ -527,6 +527,56 @@ class Solution { } ``` +#### c + +```c +char *longestPalindrome(char *s) { + int n = strlen(s); + if (n == 0) { + char *result = malloc(1); + result[0] = '\0'; + return result; + } + + bool dp[n][n]; + memset(dp, 0, sizeof(dp)); + + int start = 0, max_len = 1; + + for (int i = 0; i < n; i++) { + dp[i][i] = true; + } + + for (int i = 0; i < n - 1; i++) { + if (s[i] == s[i + 1]) { + dp[i][i + 1] = true; + start = i; + max_len = 2; + } + } + + // Check for lengths > 2 + for (int len = 3; len <= n; len++) { + for (int i = 0; i < n - len + 1; i++) { + int j = i + len - 1; + if (s[i] == s[j] && dp[i + 1][j - 1]) { + dp[i][j] = true; + if (len > max_len) { + start = i; + max_len = len; + } + } + } + } + char *result = malloc(max_len + 1); + strncpy(result, s + start, max_len); + result[max_len] = '\0'; + return result; +} + +``` + + diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md index 4ac2610fb4e8e..d18a7eac62fde 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md @@ -525,6 +525,55 @@ class Solution { } ``` +#### C + +``` c +char *longestPalindrome(char *s) { + int n = strlen(s); + if (n == 0) { + char *result = malloc(1); + result[0] = '\0'; + return result; + } + + bool dp[n][n]; + memset(dp, 0, sizeof(dp)); + + int start = 0, max_len = 1; + + for (int i = 0; i < n; i++) { + dp[i][i] = true; + } + + for (int i = 0; i < n - 1; i++) { + if (s[i] == s[i + 1]) { + dp[i][i + 1] = true; + start = i; + max_len = 2; + } + } + + // Check for lengths > 2 + for (int len = 3; len <= n; len++) { + for (int i = 0; i < n - len + 1; i++) { + int j = i + len - 1; + if (s[i] == s[j] && dp[i + 1][j - 1]) { + dp[i][j] = true; + if (len > max_len) { + start = i; + max_len = len; + } + } + } + } + char *result = malloc(max_len + 1); + strncpy(result, s + start, max_len); + result[max_len] = '\0'; + return result; +} + +``` + diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c new file mode 100644 index 0000000000000..bd3296f1505a5 --- /dev/null +++ b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c @@ -0,0 +1,45 @@ + + +char *longestPalindrome(char *s) { + int n = strlen(s); + if (n == 0) { + char *result = malloc(1); + result[0] = '\0'; + return result; + } + + bool dp[n][n]; + memset(dp, 0, sizeof(dp)); + + int start = 0, max_len = 1; + + for (int i = 0; i < n; i++) { + dp[i][i] = true; + } + + for (int i = 0; i < n - 1; i++) { + if (s[i] == s[i + 1]) { + dp[i][i + 1] = true; + start = i; + max_len = 2; + } + } + + // Check for lengths > 2 + for (int len = 3; len <= n; len++) { + for (int i = 0; i < n - len + 1; i++) { + int j = i + len - 1; + if (s[i] == s[j] && dp[i + 1][j - 1]) { + dp[i][j] = true; + if (len > max_len) { + start = i; + max_len = len; + } + } + } + } + char *result = malloc(max_len + 1); + strncpy(result, s + start, max_len); + result[max_len] = '\0'; + return result; +} diff --git a/solution/0000-0099/0006.Zigzag Conversion/README.md b/solution/0000-0099/0006.Zigzag Conversion/README.md index c12bad03a22aa..7b6d40a253480 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README.md @@ -493,6 +493,40 @@ class Solution { } ``` +#### C + +``` C +char *convert(char *s, int numRows) { + if (numRows == 1 || numRows >= strlen(s)) { + char *result = malloc(strlen(s) + 1); + strcpy(result, s); + return result; + } + char **rows = malloc(numRows * sizeof(char *)); + for (int i = 0; i < numRows; i++) { + rows[i] = malloc(strlen(s) + 1); + rows[i][0] = '\0'; + } + int currentRow = 0; + int goingDown = 0; + for (int i = 0; s[i] != '\0'; i++) { + strncat(rows[currentRow], &s[i], 1); + if (currentRow == 0 || currentRow == numRows - 1) { + goingDown = !goingDown; + } + currentRow += goingDown ? 1 : -1; + } + char *result = malloc(strlen(s) + 1); + result[0] = '\0'; + for (int i = 0; i < numRows; i++) { + strcat(result, rows[i]); + free(rows[i]); + } + free(rows); + return result; +} +``` + diff --git a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md index 04390da8f24e7..915a60092e575 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md @@ -491,6 +491,40 @@ class Solution { } ``` +#### + +```c +char *convert(char *s, int numRows) { + if (numRows == 1 || numRows >= strlen(s)) { + char *result = malloc(strlen(s) + 1); + strcpy(result, s); + return result; + } + char **rows = malloc(numRows * sizeof(char *)); + for (int i = 0; i < numRows; i++) { + rows[i] = malloc(strlen(s) + 1); + rows[i][0] = '\0'; + } + int currentRow = 0; + int goingDown = 0; + for (int i = 0; s[i] != '\0'; i++) { + strncat(rows[currentRow], &s[i], 1); + if (currentRow == 0 || currentRow == numRows - 1) { + goingDown = !goingDown; + } + currentRow += goingDown ? 1 : -1; + } + char *result = malloc(strlen(s) + 1); + result[0] = '\0'; + for (int i = 0; i < numRows; i++) { + strcat(result, rows[i]); + free(rows[i]); + } + free(rows); + return result; +} +``` + diff --git a/solution/0000-0099/0006.Zigzag Conversion/Solution.c b/solution/0000-0099/0006.Zigzag Conversion/Solution.c new file mode 100644 index 0000000000000..0c23f5da5b410 --- /dev/null +++ b/solution/0000-0099/0006.Zigzag Conversion/Solution.c @@ -0,0 +1,29 @@ +char *convert(char *s, int numRows) { + if (numRows == 1 || numRows >= strlen(s)) { + char *result = malloc(strlen(s) + 1); + strcpy(result, s); + return result; + } + char **rows = malloc(numRows * sizeof(char *)); + for (int i = 0; i < numRows; i++) { + rows[i] = malloc(strlen(s) + 1); + rows[i][0] = '\0'; + } + int currentRow = 0; + int goingDown = 0; + for (int i = 0; s[i] != '\0'; i++) { + strncat(rows[currentRow], &s[i], 1); + if (currentRow == 0 || currentRow == numRows - 1) { + goingDown = !goingDown; + } + currentRow += goingDown ? 1 : -1; + } + char *result = malloc(strlen(s) + 1); + result[0] = '\0'; + for (int i = 0; i < numRows; i++) { + strcat(result, rows[i]); + free(rows[i]); + } + free(rows); + return result; +} \ No newline at end of file From db6e8f15bec24b21dd3fdba4123c85543137c0e5 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Tue, 3 Jun 2025 07:09:34 +0000 Subject: [PATCH 16/55] style: format code and docs with prettier --- solution/0000-0099/0005.Longest Palindromic Substring/README.md | 1 - .../0000-0099/0005.Longest Palindromic Substring/README_EN.md | 2 +- solution/0000-0099/0006.Zigzag Conversion/README.md | 2 +- solution/0000-0099/0006.Zigzag Conversion/README_EN.md | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README.md b/solution/0000-0099/0005.Longest Palindromic Substring/README.md index be99158e336bb..e4a000d7aa164 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README.md @@ -576,7 +576,6 @@ char *longestPalindrome(char *s) { ``` - diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md index d18a7eac62fde..8b39b068c345c 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md @@ -527,7 +527,7 @@ class Solution { #### C -``` c +```c char *longestPalindrome(char *s) { int n = strlen(s); if (n == 0) { diff --git a/solution/0000-0099/0006.Zigzag Conversion/README.md b/solution/0000-0099/0006.Zigzag Conversion/README.md index 7b6d40a253480..172268afc5ed9 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README.md @@ -495,7 +495,7 @@ class Solution { #### C -``` C +```C char *convert(char *s, int numRows) { if (numRows == 1 || numRows >= strlen(s)) { char *result = malloc(strlen(s) + 1); diff --git a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md index 915a60092e575..45bce03f21a1e 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md @@ -491,7 +491,7 @@ class Solution { } ``` -#### +#### ```c char *convert(char *s, int numRows) { From 7c546ef8fea10585e82ea71d3b5b7eeb39d2af2b Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Tue, 3 Jun 2025 16:01:54 +0530 Subject: [PATCH 17/55] c added --- solution/0000-0099/0006.Zigzag Conversion/README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md index 915a60092e575..9e86d8fd52ce2 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md @@ -491,7 +491,7 @@ class Solution { } ``` -#### +#### c ```c char *convert(char *s, int numRows) { From f4cc2cb725310890bc56403c768d4f0a0a990eb1 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Tue, 3 Jun 2025 10:43:41 +0000 Subject: [PATCH 18/55] style: format code and docs with prettier --- solution/0000-0099/0006.Zigzag Conversion/README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md index 915a60092e575..45bce03f21a1e 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md @@ -491,7 +491,7 @@ class Solution { } ``` -#### +#### ```c char *convert(char *s, int numRows) { From 7cbf92b8adb29b6e71377df9e73b0e8eeb469602 Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Tue, 3 Jun 2025 16:26:28 +0530 Subject: [PATCH 19/55] formatted --- .../Solution.c | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c index bd3296f1505a5..26592c3a40353 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c +++ b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c @@ -1,45 +1,45 @@ -char *longestPalindrome(char *s) { - int n = strlen(s); - if (n == 0) { - char *result = malloc(1); - result[0] = '\0'; - return result; - } +char* longestPalindrome(char* s) { + int n = strlen(s); + if (n == 0) { + char* result = malloc(1); + result[0] = '\0'; + return result; + } - bool dp[n][n]; - memset(dp, 0, sizeof(dp)); + bool dp[n][n]; + memset(dp, 0, sizeof(dp)); - int start = 0, max_len = 1; + int start = 0, max_len = 1; - for (int i = 0; i < n; i++) { - dp[i][i] = true; - } + for (int i = 0; i < n; i++) { + dp[i][i] = true; + } - for (int i = 0; i < n - 1; i++) { - if (s[i] == s[i + 1]) { - dp[i][i + 1] = true; - start = i; - max_len = 2; + for (int i = 0; i < n - 1; i++) { + if (s[i] == s[i + 1]) { + dp[i][i + 1] = true; + start = i; + max_len = 2; + } } - } - // Check for lengths > 2 - for (int len = 3; len <= n; len++) { - for (int i = 0; i < n - len + 1; i++) { - int j = i + len - 1; - if (s[i] == s[j] && dp[i + 1][j - 1]) { - dp[i][j] = true; - if (len > max_len) { - start = i; - max_len = len; + // Check for lengths > 2 + for (int len = 3; len <= n; len++) { + for (int i = 0; i < n - len + 1; i++) { + int j = i + len - 1; + if (s[i] == s[j] && dp[i + 1][j - 1]) { + dp[i][j] = true; + if (len > max_len) { + start = i; + max_len = len; + } + } } - } } - } - char *result = malloc(max_len + 1); - strncpy(result, s + start, max_len); - result[max_len] = '\0'; - return result; + char* result = malloc(max_len + 1); + strncpy(result, s + start, max_len); + result[max_len] = '\0'; + return result; } From a304c26309961ded68777dbf94b8ac7129ea49c7 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:41:58 +0800 Subject: [PATCH 20/55] Update Solution.c --- .../Solution.c | 58 +++++++------------ 1 file changed, 22 insertions(+), 36 deletions(-) diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c index 26592c3a40353..e5a88d6c8c467 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c +++ b/solution/0000-0099/0005.Longest Palindromic Substring/Solution.c @@ -1,45 +1,31 @@ - - char* longestPalindrome(char* s) { int n = strlen(s); - if (n == 0) { - char* result = malloc(1); - result[0] = '\0'; - return result; - } - - bool dp[n][n]; - memset(dp, 0, sizeof(dp)); - - int start = 0, max_len = 1; - - for (int i = 0; i < n; i++) { - dp[i][i] = true; - } - - for (int i = 0; i < n - 1; i++) { - if (s[i] == s[i + 1]) { - dp[i][i + 1] = true; - start = i; - max_len = 2; + bool** f = (bool**) malloc(n * sizeof(bool*)); + for (int i = 0; i < n; ++i) { + f[i] = (bool*) malloc(n * sizeof(bool)); + for (int j = 0; j < n; ++j) { + f[i][j] = true; } } - - // Check for lengths > 2 - for (int len = 3; len <= n; len++) { - for (int i = 0; i < n - len + 1; i++) { - int j = i + len - 1; - if (s[i] == s[j] && dp[i + 1][j - 1]) { - dp[i][j] = true; - if (len > max_len) { - start = i; - max_len = len; + int k = 0, mx = 1; + for (int i = n - 2; ~i; --i) { + for (int j = i + 1; j < n; ++j) { + f[i][j] = false; + if (s[i] == s[j]) { + f[i][j] = f[i + 1][j - 1]; + if (f[i][j] && mx < j - i + 1) { + mx = j - i + 1; + k = i; } } } } - char* result = malloc(max_len + 1); - strncpy(result, s + start, max_len); - result[max_len] = '\0'; - return result; + char* res = (char*) malloc((mx + 1) * sizeof(char)); + strncpy(res, s + k, mx); + res[mx] = '\0'; + for (int i = 0; i < n; ++i) { + free(f[i]); + } + free(f); + return res; } From c7833f3fa2234de33b6f62de4f32e33a631712d4 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:42:50 +0800 Subject: [PATCH 21/55] Update README.md --- .../README.md | 85 ++++++++----------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README.md b/solution/0000-0099/0005.Longest Palindromic Substring/README.md index e4a000d7aa164..c6c52ab64cd4f 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README.md @@ -277,6 +277,42 @@ public class Solution { } ``` +#### C + +```c +char* longestPalindrome(char* s) { + int n = strlen(s); + bool** f = (bool**) malloc(n * sizeof(bool*)); + for (int i = 0; i < n; ++i) { + f[i] = (bool*) malloc(n * sizeof(bool)); + for (int j = 0; j < n; ++j) { + f[i][j] = true; + } + } + int k = 0, mx = 1; + for (int i = n - 2; ~i; --i) { + for (int j = i + 1; j < n; ++j) { + f[i][j] = false; + if (s[i] == s[j]) { + f[i][j] = f[i + 1][j - 1]; + if (f[i][j] && mx < j - i + 1) { + mx = j - i + 1; + k = i; + } + } + } + } + char* res = (char*) malloc((mx + 1) * sizeof(char)); + strncpy(res, s + k, mx); + res[mx] = '\0'; + for (int i = 0; i < n; ++i) { + free(f[i]); + } + free(f); + return res; +} +``` + #### Nim ```nim @@ -527,55 +563,6 @@ class Solution { } ``` -#### c - -```c -char *longestPalindrome(char *s) { - int n = strlen(s); - if (n == 0) { - char *result = malloc(1); - result[0] = '\0'; - return result; - } - - bool dp[n][n]; - memset(dp, 0, sizeof(dp)); - - int start = 0, max_len = 1; - - for (int i = 0; i < n; i++) { - dp[i][i] = true; - } - - for (int i = 0; i < n - 1; i++) { - if (s[i] == s[i + 1]) { - dp[i][i + 1] = true; - start = i; - max_len = 2; - } - } - - // Check for lengths > 2 - for (int len = 3; len <= n; len++) { - for (int i = 0; i < n - len + 1; i++) { - int j = i + len - 1; - if (s[i] == s[j] && dp[i + 1][j - 1]) { - dp[i][j] = true; - if (len > max_len) { - start = i; - max_len = len; - } - } - } - } - char *result = malloc(max_len + 1); - strncpy(result, s + start, max_len); - result[max_len] = '\0'; - return result; -} - -``` - From c1744a188aad2f9ec82975b877fb1f0938996227 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:43:37 +0800 Subject: [PATCH 22/55] Update README_EN.md --- .../README_EN.md | 85 ++++++++----------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md index 8b39b068c345c..e317ceda58ac4 100644 --- a/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md +++ b/solution/0000-0099/0005.Longest Palindromic Substring/README_EN.md @@ -275,6 +275,42 @@ public class Solution { } ``` +#### C + +```c +char* longestPalindrome(char* s) { + int n = strlen(s); + bool** f = (bool**) malloc(n * sizeof(bool*)); + for (int i = 0; i < n; ++i) { + f[i] = (bool*) malloc(n * sizeof(bool)); + for (int j = 0; j < n; ++j) { + f[i][j] = true; + } + } + int k = 0, mx = 1; + for (int i = n - 2; ~i; --i) { + for (int j = i + 1; j < n; ++j) { + f[i][j] = false; + if (s[i] == s[j]) { + f[i][j] = f[i + 1][j - 1]; + if (f[i][j] && mx < j - i + 1) { + mx = j - i + 1; + k = i; + } + } + } + } + char* res = (char*) malloc((mx + 1) * sizeof(char)); + strncpy(res, s + k, mx); + res[mx] = '\0'; + for (int i = 0; i < n; ++i) { + free(f[i]); + } + free(f); + return res; +} +``` + #### Nim ```nim @@ -525,55 +561,6 @@ class Solution { } ``` -#### C - -```c -char *longestPalindrome(char *s) { - int n = strlen(s); - if (n == 0) { - char *result = malloc(1); - result[0] = '\0'; - return result; - } - - bool dp[n][n]; - memset(dp, 0, sizeof(dp)); - - int start = 0, max_len = 1; - - for (int i = 0; i < n; i++) { - dp[i][i] = true; - } - - for (int i = 0; i < n - 1; i++) { - if (s[i] == s[i + 1]) { - dp[i][i + 1] = true; - start = i; - max_len = 2; - } - } - - // Check for lengths > 2 - for (int len = 3; len <= n; len++) { - for (int i = 0; i < n - len + 1; i++) { - int j = i + len - 1; - if (s[i] == s[j] && dp[i + 1][j - 1]) { - dp[i][j] = true; - if (len > max_len) { - start = i; - max_len = len; - } - } - } - } - char *result = malloc(max_len + 1); - strncpy(result, s + start, max_len); - result[max_len] = '\0'; - return result; -} - -``` - From abd5684693707df81f7de26bdc07785646867be9 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:45:21 +0800 Subject: [PATCH 23/55] Update Solution.c --- .../0006.Zigzag Conversion/Solution.c | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/solution/0000-0099/0006.Zigzag Conversion/Solution.c b/solution/0000-0099/0006.Zigzag Conversion/Solution.c index 0c23f5da5b410..3111a73e7035c 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/Solution.c +++ b/solution/0000-0099/0006.Zigzag Conversion/Solution.c @@ -1,29 +1,36 @@ -char *convert(char *s, int numRows) { - if (numRows == 1 || numRows >= strlen(s)) { - char *result = malloc(strlen(s) + 1); - strcpy(result, s); - return result; - } - char **rows = malloc(numRows * sizeof(char *)); - for (int i = 0; i < numRows; i++) { - rows[i] = malloc(strlen(s) + 1); - rows[i][0] = '\0'; - } - int currentRow = 0; - int goingDown = 0; - for (int i = 0; s[i] != '\0'; i++) { - strncat(rows[currentRow], &s[i], 1); - if (currentRow == 0 || currentRow == numRows - 1) { - goingDown = !goingDown; +char* convert(char* s, int numRows) { + if (numRows == 1) { + return strdup(s); } - currentRow += goingDown ? 1 : -1; - } - char *result = malloc(strlen(s) + 1); - result[0] = '\0'; - for (int i = 0; i < numRows; i++) { - strcat(result, rows[i]); - free(rows[i]); - } - free(rows); - return result; -} \ No newline at end of file + + int len = strlen(s); + char** g = (char**) malloc(numRows * sizeof(char*)); + int* idx = (int*) malloc(numRows * sizeof(int)); + for (int i = 0; i < numRows; ++i) { + g[i] = (char*) malloc((len + 1) * sizeof(char)); + idx[i] = 0; + } + + int i = 0, k = -1; + for (int p = 0; p < len; ++p) { + g[i][idx[i]++] = s[p]; + if (i == 0 || i == numRows - 1) { + k = -k; + } + i += k; + } + + char* ans = (char*) malloc((len + 1) * sizeof(char)); + int pos = 0; + for (int r = 0; r < numRows; ++r) { + for (int j = 0; j < idx[r]; ++j) { + ans[pos++] = g[r][j]; + } + free(g[r]); + } + ans[pos] = '\0'; + + free(g); + free(idx); + return ans; +} From a1051fabdc700df7182bedf398e983fe5cdae4e9 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:45:56 +0800 Subject: [PATCH 24/55] Update README.md --- .../0006.Zigzag Conversion/README.md | 77 ++++++++++--------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/solution/0000-0099/0006.Zigzag Conversion/README.md b/solution/0000-0099/0006.Zigzag Conversion/README.md index 172268afc5ed9..ad923fc0971e8 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README.md @@ -282,6 +282,47 @@ public class Solution { } ``` +#### C + +```c +char* convert(char* s, int numRows) { + if (numRows == 1) { + return strdup(s); + } + + int len = strlen(s); + char** g = (char**) malloc(numRows * sizeof(char*)); + int* idx = (int*) malloc(numRows * sizeof(int)); + for (int i = 0; i < numRows; ++i) { + g[i] = (char*) malloc((len + 1) * sizeof(char)); + idx[i] = 0; + } + + int i = 0, k = -1; + for (int p = 0; p < len; ++p) { + g[i][idx[i]++] = s[p]; + if (i == 0 || i == numRows - 1) { + k = -k; + } + i += k; + } + + char* ans = (char*) malloc((len + 1) * sizeof(char)); + int pos = 0; + for (int r = 0; r < numRows; ++r) { + for (int j = 0; j < idx[r]; ++j) { + ans[pos++] = g[r][j]; + } + free(g[r]); + } + ans[pos] = '\0'; + + free(g); + free(idx); + return ans; +} +``` + @@ -491,41 +532,7 @@ class Solution { return $result; } } -``` - -#### C - -```C -char *convert(char *s, int numRows) { - if (numRows == 1 || numRows >= strlen(s)) { - char *result = malloc(strlen(s) + 1); - strcpy(result, s); - return result; - } - char **rows = malloc(numRows * sizeof(char *)); - for (int i = 0; i < numRows; i++) { - rows[i] = malloc(strlen(s) + 1); - rows[i][0] = '\0'; - } - int currentRow = 0; - int goingDown = 0; - for (int i = 0; s[i] != '\0'; i++) { - strncat(rows[currentRow], &s[i], 1); - if (currentRow == 0 || currentRow == numRows - 1) { - goingDown = !goingDown; - } - currentRow += goingDown ? 1 : -1; - } - char *result = malloc(strlen(s) + 1); - result[0] = '\0'; - for (int i = 0; i < numRows; i++) { - strcat(result, rows[i]); - free(rows[i]); - } - free(rows); - return result; -} -``` +`` From e085f12ada4a38d9800b3d920c4f5155995055f6 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Mon, 9 Jun 2025 16:46:24 +0800 Subject: [PATCH 25/55] Update README_EN.md --- .../0006.Zigzag Conversion/README_EN.md | 75 ++++++++++--------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md index 45bce03f21a1e..a29574773c096 100644 --- a/solution/0000-0099/0006.Zigzag Conversion/README_EN.md +++ b/solution/0000-0099/0006.Zigzag Conversion/README_EN.md @@ -280,6 +280,47 @@ public class Solution { } ``` +#### C + +```c +char* convert(char* s, int numRows) { + if (numRows == 1) { + return strdup(s); + } + + int len = strlen(s); + char** g = (char**) malloc(numRows * sizeof(char*)); + int* idx = (int*) malloc(numRows * sizeof(int)); + for (int i = 0; i < numRows; ++i) { + g[i] = (char*) malloc((len + 1) * sizeof(char)); + idx[i] = 0; + } + + int i = 0, k = -1; + for (int p = 0; p < len; ++p) { + g[i][idx[i]++] = s[p]; + if (i == 0 || i == numRows - 1) { + k = -k; + } + i += k; + } + + char* ans = (char*) malloc((len + 1) * sizeof(char)); + int pos = 0; + for (int r = 0; r < numRows; ++r) { + for (int j = 0; j < idx[r]; ++j) { + ans[pos++] = g[r][j]; + } + free(g[r]); + } + ans[pos] = '\0'; + + free(g); + free(idx); + return ans; +} +``` + @@ -491,40 +532,6 @@ class Solution { } ``` -#### - -```c -char *convert(char *s, int numRows) { - if (numRows == 1 || numRows >= strlen(s)) { - char *result = malloc(strlen(s) + 1); - strcpy(result, s); - return result; - } - char **rows = malloc(numRows * sizeof(char *)); - for (int i = 0; i < numRows; i++) { - rows[i] = malloc(strlen(s) + 1); - rows[i][0] = '\0'; - } - int currentRow = 0; - int goingDown = 0; - for (int i = 0; s[i] != '\0'; i++) { - strncat(rows[currentRow], &s[i], 1); - if (currentRow == 0 || currentRow == numRows - 1) { - goingDown = !goingDown; - } - currentRow += goingDown ? 1 : -1; - } - char *result = malloc(strlen(s) + 1); - result[0] = '\0'; - for (int i = 0; i < numRows; i++) { - strcat(result, rows[i]); - free(rows[i]); - } - free(rows); - return result; -} -``` - From bca9136da2263719fbbdc945d686b01dff37dd70 Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Wed, 18 Jun 2025 23:42:34 +0530 Subject: [PATCH 26/55] Solution done for 0008 and 0009 in c language --- .../0008.String to Integer (atoi)/README.md | 33 +++++++++++++++++ .../README_EN.md | 35 +++++++++++++++++++ .../0008.String to Integer (atoi)/Solution.c | 30 ++++++++++++++++ .../0009.Palindrome Number/README.md | 20 +++++++++++ .../0009.Palindrome Number/README_EN.md | 20 +++++++++++ .../0009.Palindrome Number/Solution.c | 14 ++++++++ 6 files changed, 152 insertions(+) create mode 100644 solution/0000-0099/0008.String to Integer (atoi)/Solution.c create mode 100644 solution/0000-0099/0009.Palindrome Number/Solution.c diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index 87634a3e1f38a..81b6de35292f3 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -385,6 +385,39 @@ class Solution { } } ``` +#### C +``` C +int myAtoi(char* s) { + int i = 0; + int sign = 1; + long result = 0; + while (s[i] == ' ') { + i++; + } + if (s[i] == '-' || s[i] == '+') { + sign = (s[i] == '-') ? -1 : 1; + i++; + } + while (isdigit(s[i])) { + result = result * 10 + (s[i] - '0'); + if (sign == 1 && result > INT_MAX) { + return INT_MAX; + } + if (sign == -1 && -result < INT_MIN) { + return INT_MIN; + } + i++; + } + b + result + *= sign; + if (result > INT_MAX) + return INT_MAX; + if (result < INT_MIN) + return INT_MIN; + return (int) result; +} +``` diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index 05ee6458e6711..0e98d41ef7a34 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -374,6 +374,41 @@ class Solution { } ``` +#### C + +``` C +int myAtoi(char* s) { + int i = 0; + int sign = 1; + long result = 0; + while (s[i] == ' ') { + i++; + } + if (s[i] == '-' || s[i] == '+') { + sign = (s[i] == '-') ? -1 : 1; + i++; + } + while (isdigit(s[i])) { + result = result * 10 + (s[i] - '0'); + if (sign == 1 && result > INT_MAX) { + return INT_MAX; + } + if (sign == -1 && -result < INT_MIN) { + return INT_MIN; + } + i++; + } + b + result + *= sign; + if (result > INT_MAX) + return INT_MAX; + if (result < INT_MIN) + return INT_MIN; + return (int) result; +} +``` + diff --git a/solution/0000-0099/0008.String to Integer (atoi)/Solution.c b/solution/0000-0099/0008.String to Integer (atoi)/Solution.c new file mode 100644 index 0000000000000..75ff28a856467 --- /dev/null +++ b/solution/0000-0099/0008.String to Integer (atoi)/Solution.c @@ -0,0 +1,30 @@ +int myAtoi(char* s) { + int i = 0; + int sign = 1; + long result = 0; + while (s[i] == ' ') { + i++; + } + if (s[i] == '-' || s[i] == '+') { + sign = (s[i] == '-') ? -1 : 1; + i++; + } + while (isdigit(s[i])) { + result = result * 10 + (s[i] - '0'); + if (sign == 1 && result > INT_MAX) { + return INT_MAX; + } + if (sign == -1 && -result < INT_MIN) { + return INT_MIN; + } + i++; + } + b + result + *= sign; + if (result > INT_MAX) + return INT_MAX; + if (result < INT_MIN) + return INT_MIN; + return (int) result; +} \ No newline at end of file diff --git a/solution/0000-0099/0009.Palindrome Number/README.md b/solution/0000-0099/0009.Palindrome Number/README.md index 5293dccce090b..29875f8300ff1 100644 --- a/solution/0000-0099/0009.Palindrome Number/README.md +++ b/solution/0000-0099/0009.Palindrome Number/README.md @@ -248,6 +248,26 @@ class Solution { } ``` +#### C + +``` C +bool isPalindrome(int x) { + if (x < 0) + return false; + int original = x; + int reversed = 0; + while (x != 0) { + int digit = x % 10; + if (reversed > (2147483647 - digit) / 10) + return false; + reversed = reversed * 10 + digit; + x /= 10; + } + return original == reversed; +} + +``` + diff --git a/solution/0000-0099/0009.Palindrome Number/README_EN.md b/solution/0000-0099/0009.Palindrome Number/README_EN.md index 8b0ac2e383ca0..21e6e525dd03c 100644 --- a/solution/0000-0099/0009.Palindrome Number/README_EN.md +++ b/solution/0000-0099/0009.Palindrome Number/README_EN.md @@ -240,6 +240,26 @@ class Solution { } ``` +#### C + +``` C +bool isPalindrome(int x) { + if (x < 0) + return false; + int original = x; + int reversed = 0; + while (x != 0) { + int digit = x % 10; + if (reversed > (2147483647 - digit) / 10) + return false; + reversed = reversed * 10 + digit; + x /= 10; + } + return original == reversed; +} + +``` + diff --git a/solution/0000-0099/0009.Palindrome Number/Solution.c b/solution/0000-0099/0009.Palindrome Number/Solution.c new file mode 100644 index 0000000000000..f6abc1215a123 --- /dev/null +++ b/solution/0000-0099/0009.Palindrome Number/Solution.c @@ -0,0 +1,14 @@ +bool isPalindrome(int x) { + if (x < 0) + return false; + int original = x; + int reversed = 0; + while (x != 0) { + int digit = x % 10; + if (reversed > (2147483647 - digit) / 10) + return false; + reversed = reversed * 10 + digit; + x /= 10; + } + return original == reversed; +} From 95231355e467ab0fe80cc7a323592e4efcb9f0d6 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Wed, 18 Jun 2025 18:19:07 +0000 Subject: [PATCH 27/55] style: format code and docs with prettier --- solution/0000-0099/0008.String to Integer (atoi)/README.md | 4 +++- solution/0000-0099/0008.String to Integer (atoi)/README_EN.md | 2 +- solution/0000-0099/0009.Palindrome Number/README.md | 2 +- solution/0000-0099/0009.Palindrome Number/README_EN.md | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index 81b6de35292f3..a20273ea8114f 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -385,8 +385,10 @@ class Solution { } } ``` + #### C -``` C + +```C int myAtoi(char* s) { int i = 0; int sign = 1; diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index 0e98d41ef7a34..b657fe1df14d3 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -376,7 +376,7 @@ class Solution { #### C -``` C +```C int myAtoi(char* s) { int i = 0; int sign = 1; diff --git a/solution/0000-0099/0009.Palindrome Number/README.md b/solution/0000-0099/0009.Palindrome Number/README.md index 29875f8300ff1..902cb6da770d0 100644 --- a/solution/0000-0099/0009.Palindrome Number/README.md +++ b/solution/0000-0099/0009.Palindrome Number/README.md @@ -250,7 +250,7 @@ class Solution { #### C -``` C +```C bool isPalindrome(int x) { if (x < 0) return false; diff --git a/solution/0000-0099/0009.Palindrome Number/README_EN.md b/solution/0000-0099/0009.Palindrome Number/README_EN.md index 21e6e525dd03c..fe6765226b82f 100644 --- a/solution/0000-0099/0009.Palindrome Number/README_EN.md +++ b/solution/0000-0099/0009.Palindrome Number/README_EN.md @@ -242,7 +242,7 @@ class Solution { #### C -``` C +```C bool isPalindrome(int x) { if (x < 0) return false; From c86d5610e5c7c90a137e6e5deaaf53ff95ada2ba Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 06:55:45 +0800 Subject: [PATCH 28/55] Update README.md --- .../0008.String to Integer (atoi)/README.md | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index a20273ea8114f..663166f009eb0 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -391,33 +391,28 @@ class Solution { ```C int myAtoi(char* s) { int i = 0; - int sign = 1; - long result = 0; + while (s[i] == ' ') { i++; } + + int sign = 1; if (s[i] == '-' || s[i] == '+') { sign = (s[i] == '-') ? -1 : 1; i++; } + + int res = 0; while (isdigit(s[i])) { - result = result * 10 + (s[i] - '0'); - if (sign == 1 && result > INT_MAX) { - return INT_MAX; - } - if (sign == -1 && -result < INT_MIN) { - return INT_MIN; + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; } + res = res * 10 + digit; i++; } - b - result - *= sign; - if (result > INT_MAX) - return INT_MAX; - if (result < INT_MIN) - return INT_MIN; - return (int) result; + + return res * sign; } ``` From 0865be2a99e039c993351e9e866100658867bc3d Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 06:56:04 +0800 Subject: [PATCH 29/55] Update README_EN.md --- .../README_EN.md | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index b657fe1df14d3..e0ab4771978a6 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -379,33 +379,28 @@ class Solution { ```C int myAtoi(char* s) { int i = 0; - int sign = 1; - long result = 0; + while (s[i] == ' ') { i++; } + + int sign = 1; if (s[i] == '-' || s[i] == '+') { sign = (s[i] == '-') ? -1 : 1; i++; } + + int res = 0; while (isdigit(s[i])) { - result = result * 10 + (s[i] - '0'); - if (sign == 1 && result > INT_MAX) { - return INT_MAX; - } - if (sign == -1 && -result < INT_MIN) { - return INT_MIN; + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; } + res = res * 10 + digit; i++; } - b - result - *= sign; - if (result > INT_MAX) - return INT_MAX; - if (result < INT_MIN) - return INT_MIN; - return (int) result; + + return res * sign; } ``` From 63be5c0594d277478adb5f52ec3bba2c0135c4ae Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 06:56:16 +0800 Subject: [PATCH 30/55] Update Solution.c --- .../0008.String to Integer (atoi)/Solution.c | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/Solution.c b/solution/0000-0099/0008.String to Integer (atoi)/Solution.c index 75ff28a856467..26f63ab4316e3 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/Solution.c +++ b/solution/0000-0099/0008.String to Integer (atoi)/Solution.c @@ -1,30 +1,25 @@ int myAtoi(char* s) { int i = 0; - int sign = 1; - long result = 0; + while (s[i] == ' ') { i++; } + + int sign = 1; if (s[i] == '-' || s[i] == '+') { sign = (s[i] == '-') ? -1 : 1; i++; } + + int res = 0; while (isdigit(s[i])) { - result = result * 10 + (s[i] - '0'); - if (sign == 1 && result > INT_MAX) { - return INT_MAX; - } - if (sign == -1 && -result < INT_MIN) { - return INT_MIN; + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; } + res = res * 10 + digit; i++; } - b - result - *= sign; - if (result > INT_MAX) - return INT_MAX; - if (result < INT_MIN) - return INT_MIN; - return (int) result; -} \ No newline at end of file + + return res * sign; +} From b50b69d1f9c6340a747214bc8023179acac5bd6a Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 07:01:18 +0800 Subject: [PATCH 31/55] Update README.md --- .../0009.Palindrome Number/README.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/solution/0000-0099/0009.Palindrome Number/README.md b/solution/0000-0099/0009.Palindrome Number/README.md index 902cb6da770d0..46fbfac16ef77 100644 --- a/solution/0000-0099/0009.Palindrome Number/README.md +++ b/solution/0000-0099/0009.Palindrome Number/README.md @@ -250,22 +250,20 @@ class Solution { #### C -```C +```c bool isPalindrome(int x) { - if (x < 0) + if (x < 0 || (x != 0 && x % 10 == 0)) { return false; - int original = x; - int reversed = 0; - while (x != 0) { - int digit = x % 10; - if (reversed > (2147483647 - digit) / 10) - return false; - reversed = reversed * 10 + digit; + } + + int y = 0; + while (y < x) { + y = y * 10 + x % 10; x /= 10; } - return original == reversed; -} + return (x == y || x == y / 10); +} ``` From 3380c3083fddc145d046f4cdd73209a05494abb9 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 07:01:37 +0800 Subject: [PATCH 32/55] Update README_EN.md --- .../0009.Palindrome Number/README_EN.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/solution/0000-0099/0009.Palindrome Number/README_EN.md b/solution/0000-0099/0009.Palindrome Number/README_EN.md index fe6765226b82f..712ba430b9d5a 100644 --- a/solution/0000-0099/0009.Palindrome Number/README_EN.md +++ b/solution/0000-0099/0009.Palindrome Number/README_EN.md @@ -242,22 +242,20 @@ class Solution { #### C -```C +```c bool isPalindrome(int x) { - if (x < 0) + if (x < 0 || (x != 0 && x % 10 == 0)) { return false; - int original = x; - int reversed = 0; - while (x != 0) { - int digit = x % 10; - if (reversed > (2147483647 - digit) / 10) - return false; - reversed = reversed * 10 + digit; + } + + int y = 0; + while (y < x) { + y = y * 10 + x % 10; x /= 10; } - return original == reversed; -} + return (x == y || x == y / 10); +} ``` From f2b614471ae35916ae5ec1a605108956381254c3 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 07:01:54 +0800 Subject: [PATCH 33/55] Update Solution.c --- .../0000-0099/0009.Palindrome Number/Solution.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/solution/0000-0099/0009.Palindrome Number/Solution.c b/solution/0000-0099/0009.Palindrome Number/Solution.c index f6abc1215a123..c13f8cc7947ca 100644 --- a/solution/0000-0099/0009.Palindrome Number/Solution.c +++ b/solution/0000-0099/0009.Palindrome Number/Solution.c @@ -1,14 +1,13 @@ bool isPalindrome(int x) { - if (x < 0) + if (x < 0 || (x != 0 && x % 10 == 0)) { return false; - int original = x; - int reversed = 0; - while (x != 0) { - int digit = x % 10; - if (reversed > (2147483647 - digit) / 10) - return false; - reversed = reversed * 10 + digit; + } + + int y = 0; + while (y < x) { + y = y * 10 + x % 10; x /= 10; } - return original == reversed; + + return (x == y || x == y / 10); } From 32dd6311e46ba4117500f181d264ddd509019db8 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 07:02:11 +0800 Subject: [PATCH 34/55] Update README.md --- solution/0000-0099/0008.String to Integer (atoi)/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index 663166f009eb0..324738cca1c5e 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -388,7 +388,7 @@ class Solution { #### C -```C +```c int myAtoi(char* s) { int i = 0; From e74cd362ff5f1428d21358485d4237b8dc1b8d75 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 19 Jun 2025 07:02:26 +0800 Subject: [PATCH 35/55] Update README_EN.md --- solution/0000-0099/0008.String to Integer (atoi)/README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index e0ab4771978a6..bc0c422b89134 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -376,7 +376,7 @@ class Solution { #### C -```C +```c int myAtoi(char* s) { int i = 0; From acb9ee60d0732cbdf20ede3d3fe2eacbe4547dbd Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Thu, 19 Jun 2025 15:54:33 +0530 Subject: [PATCH 36/55] Solution of 0010 and 0011 in c language is done --- .../README.md | 30 +++++++++++++++++++ .../README_EN.md | 29 ++++++++++++++++++ .../Solution.c | 23 ++++++++++++++ .../0011.Container With Most Water/README.md | 16 ++++++++++ .../README_EN.md | 15 ++++++++++ .../0011.Container With Most Water/Solution.c | 9 ++++++ 6 files changed, 122 insertions(+) create mode 100644 solution/0000-0099/0010.Regular Expression Matching/Solution.c create mode 100644 solution/0000-0099/0011.Container With Most Water/Solution.c diff --git a/solution/0000-0099/0010.Regular Expression Matching/README.md b/solution/0000-0099/0010.Regular Expression Matching/README.md index 5eb9ff8be6f3d..60c9efd1e7fc0 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README.md @@ -579,6 +579,36 @@ class Solution { } ``` +#### C + +``` C +bool isMatch(char *s, char *p) { + int m = strlen(s), n = strlen(p); + bool **dp = malloc((m + 1) * sizeof(bool *)); + for (int i = 0; i <= m; i++) + dp[i] = calloc(n + 1, sizeof(bool)); + dp[0][0] = 1; + for (int j = 2; j <= n; j++) + if (p[j - 1] == '*') + dp[0][j] = dp[0][j - 2]; + + for (int i = 1; i <= m; i++) + for (int j = 1; j <= n; j++) + if (p[j - 1] == '*') + dp[i][j] = dp[i][j - 2] || + ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); + else + dp[i][j] = + (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; + + bool res = dp[m][n]; + for (int i = 0; i <= m; i++) + free(dp[i]); + free(dp); + return res; +} +``` + diff --git a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md index d7302fddd9809..7ad39ab7d42a2 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md @@ -578,6 +578,35 @@ class Solution { } ``` +#### C + +``` C +bool isMatch(char *s, char *p) { + int m = strlen(s), n = strlen(p); + bool **dp = malloc((m + 1) * sizeof(bool *)); + for (int i = 0; i <= m; i++) + dp[i] = calloc(n + 1, sizeof(bool)); + dp[0][0] = 1; + for (int j = 2; j <= n; j++) + if (p[j - 1] == '*') + dp[0][j] = dp[0][j - 2]; + + for (int i = 1; i <= m; i++) + for (int j = 1; j <= n; j++) + if (p[j - 1] == '*') + dp[i][j] = dp[i][j - 2] || + ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); + else + dp[i][j] = + (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; + + bool res = dp[m][n]; + for (int i = 0; i <= m; i++) + free(dp[i]); + free(dp); + return res; +} +``` diff --git a/solution/0000-0099/0010.Regular Expression Matching/Solution.c b/solution/0000-0099/0010.Regular Expression Matching/Solution.c new file mode 100644 index 0000000000000..8c56f6e24d91e --- /dev/null +++ b/solution/0000-0099/0010.Regular Expression Matching/Solution.c @@ -0,0 +1,23 @@ +bool isMatch(char* s, char* p) { + int m = strlen(s), n = strlen(p); + bool** dp = malloc((m + 1) * sizeof(bool*)); + for (int i = 0; i <= m; i++) + dp[i] = calloc(n + 1, sizeof(bool)); + dp[0][0] = 1; + for (int j = 2; j <= n; j++) + if (p[j - 1] == '*') + dp[0][j] = dp[0][j - 2]; + + for (int i = 1; i <= m; i++) + for (int j = 1; j <= n; j++) + if (p[j - 1] == '*') + dp[i][j] = dp[i][j - 2] || ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); + else + dp[i][j] = (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; + + bool res = dp[m][n]; + for (int i = 0; i <= m; i++) + free(dp[i]); + free(dp); + return res; +} \ No newline at end of file diff --git a/solution/0000-0099/0011.Container With Most Water/README.md b/solution/0000-0099/0011.Container With Most Water/README.md index 1a3de695501d6..96bdb181df6b4 100644 --- a/solution/0000-0099/0011.Container With Most Water/README.md +++ b/solution/0000-0099/0011.Container With Most Water/README.md @@ -262,6 +262,22 @@ class Solution { } ``` +#### C + + ``` C + + int maxArea(int *h, int n) { + int l = 0, r = n - 1, max = 0; + while (l < r) { + int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); + if (area > max) + max = area; + } + return max; +} + + ``` + diff --git a/solution/0000-0099/0011.Container With Most Water/README_EN.md b/solution/0000-0099/0011.Container With Most Water/README_EN.md index 5d113a38fbc66..96e78239bf892 100644 --- a/solution/0000-0099/0011.Container With Most Water/README_EN.md +++ b/solution/0000-0099/0011.Container With Most Water/README_EN.md @@ -259,6 +259,21 @@ class Solution { } ``` +#### C + + ``` C + + int maxArea(int *h, int n) { + int l = 0, r = n - 1, max = 0; + while (l < r) { + int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); + if (area > max) + max = area; + } + return max; +} + + ``` diff --git a/solution/0000-0099/0011.Container With Most Water/Solution.c b/solution/0000-0099/0011.Container With Most Water/Solution.c new file mode 100644 index 0000000000000..0253754113913 --- /dev/null +++ b/solution/0000-0099/0011.Container With Most Water/Solution.c @@ -0,0 +1,9 @@ +int maxArea(int* h, int n) { + int l = 0, r = n - 1, max = 0; + while (l < r) { + int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); + if (area > max) + max = area; + } + return max; +} From 4b3c78492392ee5949b23e23970f519be7f54e55 Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Thu, 19 Jun 2025 10:28:44 +0000 Subject: [PATCH 37/55] style: format code and docs with prettier --- .../README.md | 2 +- .../README_EN.md | 3 ++- .../0011.Container With Most Water/README.md | 22 +++++++++--------- .../README_EN.md | 23 ++++++++++--------- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README.md b/solution/0000-0099/0010.Regular Expression Matching/README.md index 60c9efd1e7fc0..4296808dcdf3b 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README.md @@ -581,7 +581,7 @@ class Solution { #### C -``` C +```C bool isMatch(char *s, char *p) { int m = strlen(s), n = strlen(p); bool **dp = malloc((m + 1) * sizeof(bool *)); diff --git a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md index 7ad39ab7d42a2..34e630303aff0 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md @@ -580,7 +580,7 @@ class Solution { #### C -``` C +```C bool isMatch(char *s, char *p) { int m = strlen(s), n = strlen(p); bool **dp = malloc((m + 1) * sizeof(bool *)); @@ -607,6 +607,7 @@ bool isMatch(char *s, char *p) { return res; } ``` + diff --git a/solution/0000-0099/0011.Container With Most Water/README.md b/solution/0000-0099/0011.Container With Most Water/README.md index 96bdb181df6b4..efaf19be61294 100644 --- a/solution/0000-0099/0011.Container With Most Water/README.md +++ b/solution/0000-0099/0011.Container With Most Water/README.md @@ -264,19 +264,19 @@ class Solution { #### C - ``` C - - int maxArea(int *h, int n) { - int l = 0, r = n - 1, max = 0; - while (l < r) { - int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); - if (area > max) - max = area; - } - return max; +```C + +int maxArea(int *h, int n) { + int l = 0, r = n - 1, max = 0; + while (l < r) { + int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); + if (area > max) + max = area; + } + return max; } - ``` +``` diff --git a/solution/0000-0099/0011.Container With Most Water/README_EN.md b/solution/0000-0099/0011.Container With Most Water/README_EN.md index 96e78239bf892..a36e0e61978ee 100644 --- a/solution/0000-0099/0011.Container With Most Water/README_EN.md +++ b/solution/0000-0099/0011.Container With Most Water/README_EN.md @@ -261,19 +261,20 @@ class Solution { #### C - ``` C - - int maxArea(int *h, int n) { - int l = 0, r = n - 1, max = 0; - while (l < r) { - int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); - if (area > max) - max = area; - } - return max; +```C + +int maxArea(int *h, int n) { + int l = 0, r = n - 1, max = 0; + while (l < r) { + int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); + if (area > max) + max = area; + } + return max; } - ``` +``` + From 6b4f3d51b2ba4c67f60d0593846724831ba16bef Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:29:16 +0800 Subject: [PATCH 38/55] Create Solution2.c --- .../Solution2.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 solution/0000-0099/0010.Regular Expression Matching/Solution2.c diff --git a/solution/0000-0099/0010.Regular Expression Matching/Solution2.c b/solution/0000-0099/0010.Regular Expression Matching/Solution2.c new file mode 100644 index 0000000000000..9240063d8bd6a --- /dev/null +++ b/solution/0000-0099/0010.Regular Expression Matching/Solution2.c @@ -0,0 +1,20 @@ +bool isMatch(char* s, char* p) { + int m = strlen(s), n = strlen(p); + bool f[m + 1][n + 1]; + memset(f, 0, sizeof(f)); + f[0][0] = true; + + for (int i = 0; i <= m; ++i) { + for (int j = 1; j <= n; ++j) { + if (p[j - 1] == '*') { + f[i][j] = f[i][j - 2]; + if (i > 0 && (p[j - 2] == '.' || p[j - 2] == s[i - 1])) { + f[i][j] = f[i][j] || f[i - 1][j]; + } + } else if (i > 0 && (p[j - 1] == '.' || p[j - 1] == s[i - 1])) { + f[i][j] = f[i - 1][j - 1]; + } + } + } + return f[m][n]; +} From 3edfb3d28d56e661c3c5139bfec795c3dc2beeeb Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:31:27 +0800 Subject: [PATCH 39/55] Update Solution.c --- .../Solution.c | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/Solution.c b/solution/0000-0099/0010.Regular Expression Matching/Solution.c index 8c56f6e24d91e..db0116921230e 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/Solution.c +++ b/solution/0000-0099/0010.Regular Expression Matching/Solution.c @@ -1,23 +1,33 @@ -bool isMatch(char* s, char* p) { - int m = strlen(s), n = strlen(p); - bool** dp = malloc((m + 1) * sizeof(bool*)); - for (int i = 0; i <= m; i++) - dp[i] = calloc(n + 1, sizeof(bool)); - dp[0][0] = 1; - for (int j = 2; j <= n; j++) - if (p[j - 1] == '*') - dp[0][j] = dp[0][j - 2]; +#define MAX_LEN 1000 + +char *ss, *pp; +int m, n; +int f[MAX_LEN + 1][MAX_LEN + 1]; - for (int i = 1; i <= m; i++) - for (int j = 1; j <= n; j++) - if (p[j - 1] == '*') - dp[i][j] = dp[i][j - 2] || ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); - else - dp[i][j] = (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; +bool dfs(int i, int j) { + if (j >= n) { + return i == m; + } + if (f[i][j] != 0) { + return f[i][j] == 1; + } + int res = -1; + if (j + 1 < n && pp[j + 1] == '*') { + if (dfs(i, j + 2) || (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j))) { + res = 1; + } + } else if (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j + 1)) { + res = 1; + } + f[i][j] = res; + return res == 1; +} - bool res = dp[m][n]; - for (int i = 0; i <= m; i++) - free(dp[i]); - free(dp); - return res; -} \ No newline at end of file +bool isMatch(char* s, char* p) { + ss = s; + pp = p; + m = strlen(s); + n = strlen(p); + memset(f, 0, sizeof(f)); + return dfs(0, 0); +} From 01e1e5362a4bc7db7d6962b5662b022428d8dde1 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:32:04 +0800 Subject: [PATCH 40/55] Update README.md --- .../README.md | 83 +++++++++++++------ 1 file changed, 58 insertions(+), 25 deletions(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README.md b/solution/0000-0099/0010.Regular Expression Matching/README.md index 4296808dcdf3b..683a3eb2795f9 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README.md @@ -331,6 +331,44 @@ public class Solution { } ``` +#### C + +```c +#define MAX_LEN 1000 + +char *ss, *pp; +int m, n; +int f[MAX_LEN + 1][MAX_LEN + 1]; + +bool dfs(int i, int j) { + if (j >= n) { + return i == m; + } + if (f[i][j] != 0) { + return f[i][j] == 1; + } + int res = -1; + if (j + 1 < n && pp[j + 1] == '*') { + if (dfs(i, j + 2) || (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j))) { + res = 1; + } + } else if (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j + 1)) { + res = 1; + } + f[i][j] = res; + return res == 1; +} + +bool isMatch(char* s, char* p) { + ss = s; + pp = p; + m = strlen(s); + n = strlen(p); + memset(f, 0, sizeof(f)); + return dfs(0, 0); +} +``` + @@ -581,31 +619,26 @@ class Solution { #### C -```C -bool isMatch(char *s, char *p) { - int m = strlen(s), n = strlen(p); - bool **dp = malloc((m + 1) * sizeof(bool *)); - for (int i = 0; i <= m; i++) - dp[i] = calloc(n + 1, sizeof(bool)); - dp[0][0] = 1; - for (int j = 2; j <= n; j++) - if (p[j - 1] == '*') - dp[0][j] = dp[0][j - 2]; - - for (int i = 1; i <= m; i++) - for (int j = 1; j <= n; j++) - if (p[j - 1] == '*') - dp[i][j] = dp[i][j - 2] || - ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); - else - dp[i][j] = - (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; - - bool res = dp[m][n]; - for (int i = 0; i <= m; i++) - free(dp[i]); - free(dp); - return res; +```c +bool isMatch(char* s, char* p) { + int m = strlen(s), n = strlen(p); + bool f[m + 1][n + 1]; + memset(f, 0, sizeof(f)); + f[0][0] = true; + + for (int i = 0; i <= m; ++i) { + for (int j = 1; j <= n; ++j) { + if (p[j - 1] == '*') { + f[i][j] = f[i][j - 2]; + if (i > 0 && (p[j - 2] == '.' || p[j - 2] == s[i - 1])) { + f[i][j] = f[i][j] || f[i - 1][j]; + } + } else if (i > 0 && (p[j - 1] == '.' || p[j - 1] == s[i - 1])) { + f[i][j] = f[i - 1][j - 1]; + } + } + } + return f[m][n]; } ``` From 59289cfe181f3c297b82878e8c1fe4f349a80e32 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:32:44 +0800 Subject: [PATCH 41/55] Update README_EN.md --- .../README_EN.md | 81 +++++++++++++------ 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md index 34e630303aff0..4c42dbcb7a3d9 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md @@ -330,6 +330,44 @@ public class Solution { } ``` +#### C + +```c +#define MAX_LEN 1000 + +char *ss, *pp; +int m, n; +int f[MAX_LEN + 1][MAX_LEN + 1]; + +bool dfs(int i, int j) { + if (j >= n) { + return i == m; + } + if (f[i][j] != 0) { + return f[i][j] == 1; + } + int res = -1; + if (j + 1 < n && pp[j + 1] == '*') { + if (dfs(i, j + 2) || (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j))) { + res = 1; + } + } else if (i < m && (ss[i] == pp[j] || pp[j] == '.') && dfs(i + 1, j + 1)) { + res = 1; + } + f[i][j] = res; + return res == 1; +} + +bool isMatch(char* s, char* p) { + ss = s; + pp = p; + m = strlen(s); + n = strlen(p); + memset(f, 0, sizeof(f)); + return dfs(0, 0); +} +``` + @@ -581,30 +619,25 @@ class Solution { #### C ```C -bool isMatch(char *s, char *p) { - int m = strlen(s), n = strlen(p); - bool **dp = malloc((m + 1) * sizeof(bool *)); - for (int i = 0; i <= m; i++) - dp[i] = calloc(n + 1, sizeof(bool)); - dp[0][0] = 1; - for (int j = 2; j <= n; j++) - if (p[j - 1] == '*') - dp[0][j] = dp[0][j - 2]; - - for (int i = 1; i <= m; i++) - for (int j = 1; j <= n; j++) - if (p[j - 1] == '*') - dp[i][j] = dp[i][j - 2] || - ((p[j - 2] == '.' || p[j - 2] == s[i - 1]) && dp[i - 1][j]); - else - dp[i][j] = - (p[j - 1] == '.' || p[j - 1] == s[i - 1]) && dp[i - 1][j - 1]; - - bool res = dp[m][n]; - for (int i = 0; i <= m; i++) - free(dp[i]); - free(dp); - return res; +bool isMatch(char* s, char* p) { + int m = strlen(s), n = strlen(p); + bool f[m + 1][n + 1]; + memset(f, 0, sizeof(f)); + f[0][0] = true; + + for (int i = 0; i <= m; ++i) { + for (int j = 1; j <= n; ++j) { + if (p[j - 1] == '*') { + f[i][j] = f[i][j - 2]; + if (i > 0 && (p[j - 2] == '.' || p[j - 2] == s[i - 1])) { + f[i][j] = f[i][j] || f[i - 1][j]; + } + } else if (i > 0 && (p[j - 1] == '.' || p[j - 1] == s[i - 1])) { + f[i][j] = f[i - 1][j - 1]; + } + } + } + return f[m][n]; } ``` From 74f19972f14f242b339ad2f24cc17c9e9a7ba579 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:36:16 +0800 Subject: [PATCH 42/55] Update Solution.c --- .../0011.Container With Most Water/Solution.c | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/solution/0000-0099/0011.Container With Most Water/Solution.c b/solution/0000-0099/0011.Container With Most Water/Solution.c index 0253754113913..a2dd45e5b194d 100644 --- a/solution/0000-0099/0011.Container With Most Water/Solution.c +++ b/solution/0000-0099/0011.Container With Most Water/Solution.c @@ -1,9 +1,22 @@ -int maxArea(int* h, int n) { - int l = 0, r = n - 1, max = 0; +int min(int a, int b) { + return a < b ? a : b; +} + +int max(int a, int b) { + return a > b ? a : b; +} + +int maxArea(int* height, int heightSize) { + int l = 0, r = heightSize - 1; + int ans = 0; while (l < r) { - int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); - if (area > max) - max = area; + int t = min(height[l], height[r]) * (r - l); + ans = max(ans, t); + if (height[l] < height[r]) { + ++l; + } else { + --r; + } } - return max; + return ans; } From 61bbe5f3ffc073763c2e42391f8c78bab86480bc Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:36:34 +0800 Subject: [PATCH 43/55] Update README.md --- .../0011.Container With Most Water/README.md | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/solution/0000-0099/0011.Container With Most Water/README.md b/solution/0000-0099/0011.Container With Most Water/README.md index efaf19be61294..70c5128220e2c 100644 --- a/solution/0000-0099/0011.Container With Most Water/README.md +++ b/solution/0000-0099/0011.Container With Most Water/README.md @@ -264,18 +264,29 @@ class Solution { #### C -```C - -int maxArea(int *h, int n) { - int l = 0, r = n - 1, max = 0; - while (l < r) { - int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); - if (area > max) - max = area; - } - return max; +```c +int min(int a, int b) { + return a < b ? a : b; } +int max(int a, int b) { + return a > b ? a : b; +} + +int maxArea(int* height, int heightSize) { + int l = 0, r = heightSize - 1; + int ans = 0; + while (l < r) { + int t = min(height[l], height[r]) * (r - l); + ans = max(ans, t); + if (height[l] < height[r]) { + ++l; + } else { + --r; + } + } + return ans; +} ``` From b5addc613da2268ec008387f358fbd8f2c62c920 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:36:50 +0800 Subject: [PATCH 44/55] Update README_EN.md --- .../README_EN.md | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/solution/0000-0099/0011.Container With Most Water/README_EN.md b/solution/0000-0099/0011.Container With Most Water/README_EN.md index a36e0e61978ee..0a0ab8c8f7108 100644 --- a/solution/0000-0099/0011.Container With Most Water/README_EN.md +++ b/solution/0000-0099/0011.Container With Most Water/README_EN.md @@ -261,18 +261,29 @@ class Solution { #### C -```C - -int maxArea(int *h, int n) { - int l = 0, r = n - 1, max = 0; - while (l < r) { - int area = (r - l) * (h[l] < h[r] ? h[l++] : h[r--]); - if (area > max) - max = area; - } - return max; +```c +int min(int a, int b) { + return a < b ? a : b; } +int max(int a, int b) { + return a > b ? a : b; +} + +int maxArea(int* height, int heightSize) { + int l = 0, r = heightSize - 1; + int ans = 0; + while (l < r) { + int t = min(height[l], height[r]) * (r - l); + ans = max(ans, t); + if (height[l] < height[r]) { + ++l; + } else { + --r; + } + } + return ans; +} ``` From 481cb58e107a139bdb7553c0ab1fd291bc98a0b1 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Fri, 20 Jun 2025 06:37:26 +0800 Subject: [PATCH 45/55] Update README_EN.md --- .../0000-0099/0010.Regular Expression Matching/README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md index 4c42dbcb7a3d9..5f7d07ae1b9a8 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md @@ -618,7 +618,7 @@ class Solution { #### C -```C +```c bool isMatch(char* s, char* p) { int m = strlen(s), n = strlen(p); bool f[m + 1][n + 1]; From 04e664c46cacb3cbd86f98065e2c7ac1546f532d Mon Sep 17 00:00:00 2001 From: pranjal030404 Date: Fri, 20 Jun 2025 16:48:09 +0530 Subject: [PATCH 46/55] 0012 and 0013 done --- .../0000-0099/0012.Integer to Roman/README.md | 23 ++++++++++++++++ .../0012.Integer to Roman/README_EN.md | 23 ++++++++++++++++ .../0012.Integer to Roman/Solution.c | 16 +++++++++++ .../0000-0099/0012.Integer to Roman/image.png | Bin 0 -> 102928 bytes .../0000-0099/0013.Roman to Integer/README.md | 26 ++++++++++++++++++ .../0013.Roman to Integer/README_EN.md | 25 +++++++++++++++++ .../0013.Roman to Integer/Solution.c | 19 +++++++++++++ 7 files changed, 132 insertions(+) create mode 100644 solution/0000-0099/0012.Integer to Roman/Solution.c create mode 100644 solution/0000-0099/0012.Integer to Roman/image.png create mode 100644 solution/0000-0099/0013.Roman to Integer/Solution.c diff --git a/solution/0000-0099/0012.Integer to Roman/README.md b/solution/0000-0099/0012.Integer to Roman/README.md index 815d37edba30b..2f57cee48926f 100644 --- a/solution/0000-0099/0012.Integer to Roman/README.md +++ b/solution/0000-0099/0012.Integer to Roman/README.md @@ -300,6 +300,29 @@ class Solution { } ``` +#### C + +``` C + +char *intToRoman(int num) { + static char res[20]; + res[0] = '\0'; + + int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + char *syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", + "XL", "X", "IX", "V", "IV", "I"}; + + for (int i = 0; i < 13; i++) { + while (num >= vals[i]) { + strcat(res, syms[i]); + num -= vals[i]; + } + } + return res; +} + +``` + diff --git a/solution/0000-0099/0012.Integer to Roman/README_EN.md b/solution/0000-0099/0012.Integer to Roman/README_EN.md index c7b57f780c463..20627b2887bf7 100644 --- a/solution/0000-0099/0012.Integer to Roman/README_EN.md +++ b/solution/0000-0099/0012.Integer to Roman/README_EN.md @@ -298,6 +298,29 @@ class Solution { } ``` +#### C + +``` C + +char* intToRoman(int num) { + static char res[20]; + res[0] = '\0'; + + int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", + "XL", "X", "IX", "V", "IV", "I"}; + + for (int i = 0; i < 13; i++) { + while (num >= vals[i]) { + strcat(res, syms[i]); + num -= vals[i]; + } + } + return res; +} + + +``` diff --git a/solution/0000-0099/0012.Integer to Roman/Solution.c b/solution/0000-0099/0012.Integer to Roman/Solution.c new file mode 100644 index 0000000000000..fec88f7376bec --- /dev/null +++ b/solution/0000-0099/0012.Integer to Roman/Solution.c @@ -0,0 +1,16 @@ +char* intToRoman(int num) { + static char res[20]; + res[0] = '\0'; + + int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", + "XL", "X", "IX", "V", "IV", "I"}; + + for (int i = 0; i < 13; i++) { + while (num >= vals[i]) { + strcat(res, syms[i]); + num -= vals[i]; + } + } + return res; +} diff --git a/solution/0000-0099/0012.Integer to Roman/image.png b/solution/0000-0099/0012.Integer to Roman/image.png new file mode 100644 index 0000000000000000000000000000000000000000..b322a729dcf0b9085bac398b7f0acefef27a7865 GIT binary patch literal 102928 zcmZsDWmsIx(lwSqfZ!I~3GTr?xCaYvK?ZksLU4C?3l?B-4Z$6P4i;PoXK?r?Ip^Ga z?(@BW*w4(~Q(axVy1G`?YQj~Nq+cTwBE!JIyq1-D{{aT(g&+(JTn`c)^c$b?NIDo8 zav0h7V(K2SM;$0GxC6=WwW#g ze%#))f{QURDUcnCY=*#fQyGvV#*a8WQ+-AHV3*mO#n?`)5kTZYcVOhgENKlhDl za-fsQjMd`&NO;@+%5&!^uRa%*|9&X$^yx&HjZ=(AoCko%)mZ zXTP?EY6JeJt~#gZ7J04hH}x(tWz#dTJ!8%!X9%>CfW1o&cEcfacE9%Qr=c-BRVY1Qsr?hyIx7Uz2mvOrFA{&? z)QBMr*umO-cUxbo+~sz6iOvFh+j%)oFF(>?J^u@b zs<6Zf=WgD3D1j!G)v!eH@qBwkK849~OQ-JBPzVbC^7-d7zAVQhe!YV?ZI=jBm(i8_ z-rjA6&3Q$>y}%IPIsI=>IYOD|AiA5~Zwu=yoK7QSW3~VQpYx7FD7ZJHwz?WEf{~TA z%jed~)6=sOkH4hr(@=u@ns3vOJ_{H^T-U^amrBdSo;k$3Fk zeP3LND>H1!%j|VsYN!%h928NQ3R+U0&ky47?pk>bi>TPAudubVGYwRJOatBrBnpNu zf9B)inSXoqA(w=PQ0D&IexEPlGYvT2V&JVb2XgLFJp}QF$6@>+NiFwR?sUYuJLG5) zpGB`*3m@$c-*DPMODpt6LsQfI>?|L#L)V%1G=J4CML$l zI!eK&4~H;T^%fJt?#EeLaeT)`E4iC}sX+KDNh^I_-9wGBEjqAWgn@y9A9TqQ5gW0x zvOW(f`vsk-m`~(94l~yDP9cI|mQU#UC)@c@#PTW#1aPL_td19TSPOL7bc|rUrKbnj z+4*h7OE1&Br;GxlGJ`DC+1~d2R?% zcHL_k92@HsFJE?yd0SgkQSl=){_On?&g;;(a&~4+tsNaChDpt{4>U9EUU%bJe8Kj} zDu@hdrC3vtrnSgeJf>=q60OcN1&Ndu`KpOcJE*_qVY=QZz zcF&8QyF0JaEZH_}%vB47(ch+Z=4pHt^912z&nGeeX2|dVl#sLScWnE8W9c0~smzOH z#ZVpryt2$|@r%e&Fo`J5RCRF42FnB>c3!rC-PWDopctVx7&V=NE(Ivj-T|GED9G8_ zS$cQpO1HLVV(xk3PS^RVQQKN-cgOfer}Km9gM{%ZLa|iZh$0fbaYaSNAxy~l*qCH% z$crf$j&Ejipj0Mpaa=a7)A#c7C>$E2Ax!wureKwX%*@Dm0}RTJwH9Z(?NKhpaCY-h zFIbZ}si$z37qWR`9`#{~r?vbaQ3CFILQv#WS^A7|6crWILY#h)O9sbGc$Quj5WM7x zk^Ck9T8G$`KvxwiU#Tu^r1xpD-Xb@ZD2jybxbtdGH&*amrt(S-_!Mn)q%sh5=0*$N zQDT%&Bn^Z>k;`t{|MYl2U+o&LSX$(Jf2iq?gg9Dbt6@#q!P0YBHi=fa z{G$rLinvAsX|0_6OniM&Q%G>tm~TJO4DrqHy`p{i2R;H_Q%a1zeV5Dew~vf|2HWe- za}h2MM~^5Ult_nOL=q`?t(17)x8o~yIp4iNjHbKGQs9Lfoc@kIV5e{_ww8SUfyXTG zyN~}Stk8Z@234Es{MrvYci??IguTV{`MPrVE~#s2_x2h8=}x4@+9l`dwA($#7wXu& zWTLg-hTzPc65T$1`JP#`^oHN`4GXH==-UeEAkdqaNNA$@9wZ;kQ3B7P@eSvL|EcTC zXf4xX3`%OSomQY#f#aY&XF)^2tF7u8WkK$=yj`S-Od)SbI;RB)1cHWra>ddCL?)6& zj)hP$3>YTnjGTdh6xHZPj87*4Y@Pd}JeK(jMw9A@SW+o|PY<5M>uq#^P#Vuu1|Hf$ zo9?#@xHaX`tyT0fCcSQHvI6dtZLDw_8XBSKWM7Im^YIdC6+v}oBZ2UU=A&urmG}v6 z9LGXFTj$$U>){?qd;C!mbXL(8OCf}IL0R&4B8~-vD1dmCi-nLN1tR7`5+yb`*>F*# zX$rpY*SN%_Y&x* zb3_`~dYDaQ9Hu!y6f#9M)sjQ*`K6fQ`4{EJAEwyQ+nm82}@%ORyh|A$h$b*abqowv=jOgV3%q+nDlhGSYVe9%vgM2$k@QM-@};NP`T5xm?m1L^h z4`~+NGq;u{k4F6?JO6A9Z|+hO(-W1sKFwfLCKH4N)WGf{{aVKcjFpX*-M;yiUQ;C> z#N!9M8<#A#F$h7{bn!N8$_0rybXsu~YTl>BoTLR- z`tc1#R+T&fho|q-I7^_sx_moX~6#3Wp}@*VqG5E zil1T)g$b1r;);V+m-`UF*?0IyXq)Tb^fKagN}QxYwy*b#sf?NWY{$klmo-rKGJklu zFBVh3@qLGUW;stoy!|`%k#)Xj^0z&`q;tNglsyVIuRc<{n7G0BYBuQ}`E5U+*D|2Z z^K}=wp>7S!4N(`0*X-ctI0$t6Xg?ojRKa+E6j<3RQW4{lbQf$C#5S1a#vejj5zznL zC~|qyqcWV+V!ZwSxQ**Pc5BWf=GVi94WzO0ox*?)SNly~Fw?2Im{#)1=r1IYco|70 zl`ZvKm$g2Am4?;0VtG#iHb@02X#G_W{pC$Ktj<}E@6vft z1-#SurKL4K;uFX7Y~v$hfbww;r?-Wa(PEuhRaKSsTqQdhBmrt5-uRd}cV?#0hj!I! zO~juw6wEpLdCE*>o<}oG`e89qaZT+0tRmXuNYsSTr7EPwM0=gn%)*jwyQ;@A!u`6^ zNONdsr#@k^%e~dH_Rs^7v^a~#5sCNCyE*a|EjV0&ucK@$uSkf8$9*s<#P_Q|!_zR! z+R8cR!%F?_KnD_YH3Jm!xF7|3y4u>hIvNl)orZH)m_APvwNAuC-n+-PJSh10A*w~m>jlqll<13M0i~*k-=Po9;U)LDh{4wO#W8yQU z_OV>v@Zq=_(XP2kkNgj6JQFj5CfI7FN?_ZL57n%HzKaUL3O% z+cCq^fdfmhjRSu^!eONGyB-wA3R@ku*2Y223q{m)|!$MF{|=f&{Y%MaxpUB%A5(4&*e+a>QV>e$VauYLvnN$=3?Ge}idD~tTdfT3NL{A!8T=-*=e_sOa!lCA{^8_sb{?FU1 zzpb_EkkS(K&v^ec`U+N{u(s^C;v&?IE`vx>etX#fQMutf4Eq(bKm%{0^@u+%^}EvX z+p~h9b00rJ!HN>aV$*b^$d>iKraLNlDRiUVr(yd0UHz?D-aI9AfqqYFm~RxUH{Vgy~9f=KKF`Z+CkPui`hpqrh2hzM~9#jf+n{e5WHSoi+?>wKJ;5T=%`54@MdOYX+S8NIJdxU`{P)D&snra5^BpJ zdg~fn&ySA(k>w%l6!brqB`?SL|73lo!xs4QKiUUCl~-mn>*JiV##Ts6goULAD}cPg z%wde<|9Va|fvUR*YAI->e>prX{Aa#f6AW&#{~9sSAQJkP5Y*-jmd?Lz{72SV0(6W0 z+f;upq8}*!mKBy>heqVKbTrFT<8xafoVqf;+n0YULH(Yb*xcl=C^6*xWF)U6SC>Oa1J{3RPH(N2RCxaz$2E938_ z_q!%mBW?s;kM`|n{l_cbQqhDfLlIrqtKMiRV$?BA%>vFlqns87xqQy%3RvoBX<>oD z8l8p%k>?AM=bHhMCs4!V4o}zZMeg%MAHJbWR1@N5@~js%oH-UC0d0)$@%qJ#l3hbUk?#W4Hd^)Z0tttiY?-@_q;;2d#&{-j zguI^~Zs~G73OEB0^7rgWYOoSxfLfZG23>xS!^w=tD*VKEWA=U*Lv*<=0Zraw7z&+E zC%VntRWjNw*Hwv`<{u?GQFwBFDgb5?7+=9#B|SKfE|Q6wi7#;N_{&|wLU0xBC~6^^ zKO>UF3UC_0`Z>R*cD{?sQ_}r}w}0HRg(-My7;ZYbdosO_xv`t9R2I~BGP|!o-5nV! zOn`*jF3D$f;sck*_Z3+)pZ6fRR8nTa>EW^XES6r7&R3@V7PDCbNPuUh{=G9+e+6wX z89Q~3<6r(>vC!}zUg!%tvma@q@U~p%0iIgsVt=l{t9rD$pR!li_S%q^Q;-s;_$E;= zA#Bx~^H`zyqSqx#mI}~ySgo=>ok=wER6<^}cJBG?Y=1RRHh6+xXk2b^HSYg#Tj&px z_=XgMcYIqK`}9C|qQa|J(zdcaf%fm1gnB~P#2FLISRd`oyj4i2i#UDmVIPNRSX+*;ek znyUf1Cs~($rZ)~K3-ivt3tDgoihBJ5XI3l)0R4Bp>)|crl<}iF8c$y_4)oG?E$}8n z;;vH~OhmSKq23)_Es@q@Ssxm0pF4^A&{#s-H-Yb0Nb;(kxpY#bRg8;t;u?b!;S_(&(YrnZ_oxyn^X0~h2m6%K+cuTAT!N1fu$h0o)%PY7E}L@s zh^HxU*F*(P@R+kM%cH9 z9}KC38_QPnI%m&}*4d%cKNFd!bGml@`EFVq-ACstC@!RA+rrXye~fg<2n>RyU0F2V z&!!0XjyGjw*qk|+KQsGi{~E6z9VB>4vFGLJV!|^$!jKZu6mp-x=I>X8!ArGx%+3&`#bzj zQeirLOo)W?77kjL|qN%$H6qX<4Y6195F( z9$hagbqS}qyd@KHRp%*O_&W7N7Xt+=-gaoJajgn17$mwSGp6mX#8k5`ob7m@bhMau zUip0o-UqM9oBG_xk$N2NQM<`DW*2URU?8?`=DCmkcwMB=8I`62d{2ZGGy)_n)J1*H5FLl{gVxIo2Hd*ZLIA!gSzVPf8LaL1{tE z-+S{W9kxxwZUAbvs8}NRXFy9dk-NX#F!}No6}Z1)Bib26BKQCeh&)L^DlO^OJzB8U zI3I`SSU*&$WVQZXn$A01nC_}wV4ILws+V|A?=%T62_@A_w0O7g&-imzp|p+KZAt5;0&+mU*MaYHg(_KyXMTwS3>xs9L%B3cv$WH&3gaI>uo~ zqLGRaS37S-yxP_dH+Yp~-q%^Ac&4mPatxj&|lJSH(_t{`22$sdksZZesP2o*5zu?|x7 zZ2o|T2hfsyYoFbcr1z|(tH$Mj!g-Cm6=Z2XyHTKDA+@t@8GTb6R7ooGaP|^W1bt|X zVpQ)za8Uo5+Y>EbwDsfFiY#c>$4Sr1po-z7U|9U84!glp{0ly}VxHMYpFjpd2Ri+e(xQuY zfB!5UP1s>QA8Ft92$E@Z;Ak-P=2kV7gF6orO;wr zeT^k{pO_hxWi$tiFm1ZniRt&+qS2HxA`sNzh0|&vYfve^%Tp@!xE^A~-%7sAU`q*h zlH})()o0PH*#(+n5&)!8rYnm9SwC}loO^oU*F&3F#P8~8&$PyWGu+!p#cOKX5nx7F^t9c<6SS!#?nzFdMY!2v$X44H#o(6$Cq*R^5Qv}v=bjB6&&$@_SiauLV7WJH9u>sSZm#^FvP{V zVGhl!&AGOGIr=W!c84R#L~pMrv|4|_PDW5~5(1_I8yWphSbY>}e&CJ?|0fJV@g0Uc zLclA0TwJk$j*^mh+}u^B#UAmH6JPrt>za;6(}5Tie3qHnS!lzsj2sfI;?ksqF`^zS zE8zTuKov)N_|9g*wq9$k{d~K|&O?L%5Ze&2T1FNJ3>D9(Ko{ma?(S;azgy_&lD}VF z#;|`S8L+y{H}>B+=toNY?H?{clxVD&5wuMya`PRXMbG1~HyoP;^FkxyK=*s71b42eV{;H|u0jC}b$T^aKS&&`+TiS~YGy$m7;fRMEfM zk01D#85BT?DWL;fAAM>R8~gwJ4xmmDhlhv53>|;0!}cqvbAEBPe0{ub*^|guZQx#vj2Q)g@YBDCe3nn|4@I?8_Vosh|pS~U9b3mJn8lF_sj$f z+wK#<9-gb5EY#I6{yqBNhSCrGQwez`mB*ODz4Yl{wUB?xFc#3l6SNG&ZE$vQY+Y)h zC-XUKk^O!XL zRfaIZY<9mpcSL;h^*MAMSX=PzA`=8Sn)n{l7UQdDdvpoiL7u`7g5J-R6?O7)=;I$P zyiVo^p7cnq2!RDj+S)m(qZ^t}4o!S#tY7opqfwwkU zm2kINC-rvE!9;u#TbDckhgma6${g7|Qqs)Q_oO|=SS~U;{*)Joy)8$5P}zE zP!Y3NL~EhxG&x5;F_>O{W^8EGlgQnkF+BLt{6dy0`|@ZUpV7ROHd^FJMie0^yV*E4 zNuasa6k28Slz2iS;@4j6)f%iW&qBe- zvZ#bW0F77-RXmfZ*UsN*recW{b4#Q%a3kMk&~Q&LG8-GMg~i9^In!oHyNXZc3QM-J z8Z47M_P$iF$31SLdeuUGurV9Hz~%MMLC-Zx3Y1vinIk$0zZz=;n_88Bpeg;@MOMc^ zuFjaqkZfT%ixdz8BA0*`E-EW3h`6nim>Cz-g?;Zt9)5@@zP`G^h?&IqDo?TOS+s~R% zew~m#x?_Pig#%p=>}LBac*#)$H@T~uTOC#rV6k_+PSxv2OZH7UeDX$qGjTQ79;U1bk0Ic3OZZ?wzrrd4F& zlN;anjCXtZHmJcV>ZcdidMOHkPvB4kmeNZ*C}d+%J8?lv6t2WS`$yP7Kk3Mcu0LcN ztWXktlI;LvO-c|Q7*7TYo5Hyfojr4Yp;;2_p?&#a&l=FihGtp?q?tBU7O2Ef8IFftnYoJq1m zv2V0@xndeyerKn!fIwSiWo4O6S2P0y1GIB3{}$(KRaG{d7&>A3*RKrB%-L+l;A`4Va@_NQbndPrTEUH{yck88SbqrA%yxv^Bs6N;qzO89>2)L zmv43B85nci8QSQEMQ#thi`y1&9!juTg+Fm(AcrhlvA5||2=N9~Sf5D+}N$!VpA*i`f~g6^G0uh>#vw|CUm zP7N-t*!bLC?nAjKXli!cDlkqt+1dJrhRQ>p002Nk1Gml**a+<$7ZgzPMnF4%d2Gf# zpP?-+C{t%)Y<#@rGg-7l0X}8i=OW+Zn0gWZ4%_g^CJVe1j|*vwMxhO(o-+z?o0Zv&wIQ?}tpBVWpEx(Y?BA&k{S9bv!4MS>S?pL2izl)p& z(6q@G7)Qd;HYlJeASL={H=P5?G0o84KDLo zU}Fhh-G!A1J@xQc7D^kU1)c6n!RM*!7uxUN_ae>o(WD`#7g}G<3RWX&;J#oz!j4l+ zjj|yKk`7l~&`R#{qi_@rgcqe()Nt461kd01hKS#KKcxoe61fl9bXakgySH0?oyeHO zrEe!4TEtBK@)h6m(473Lf&`NxpX|FgVc@(0UerEJ%t1JF2l{+!t6;76W#=?Ek-zzT z`A>VYnm0mS`^$Yz6Wq*X#0((Ur;R1L9DG!R3i`GK)SkuEXL=5~F~^ZPdaTj-3#4YuI_s63Yerwh$UL{O=VN<8Hq9}#WF}8Ri_aa4IR^n_az0>Jcr{Z?}T@fDR&hi#yMk%kOl%F7c$% z(ldQ$_J9Fl?~arb-NIWcroR4+=-SFrU@*1^I~124zNptpE!te3`T_qE)#JEjH>#av z(L+f|Nli^nS9hsEGIBguNfrdbabuKCxBx(u(SyDpnr|V3#RThGKU5iFs zi{`StbYKMqH~|X(Y!i_VWH^Vpws*w?KhFhP4d=BYwJ*sEEGBEK%T_P=9etitbo9=l zhRCb3^XSr{nkJ;>>9bRQ);qw|_`u9>+!&g|9P~9OXmUT$*h44qOJ5!-kbLpJ_6`~7 zoaZVyjEfv0p7j1}X=G@%6ECvfWTJ;nk-lPT*%lBFHvhOcQ#rzNbzy+AN^;~%(jp%F#99n5a4yWb(cH$4^L^$AZE(T> zjYKtfp2K7m_j)=h;M-n`13D339j2<9Yb`dN%=9MIwg3MDCEc9mw4T~eCo_)J)_367 zqPZq!gkqd=K7$pyo%v&LIlDKwa*&0hnLBX1b=7|^N_z(#1A)!eE@S=96*?1H!q?_% zQx7F`RU?^7VZD9WUr`Qe!98^mqA7Ftmz&@)KqxUjAs>07<`M={2s^{slVBSXccAepHjbk;1TiV zA|lhD^12&sac+x@aBC9os@wl8qbI0pYc{W^wTRti@T02=slKxsKfQIjp| zlp2)*xw3q#X3HPmxRsOVYG!RaUy>uPUWyvr6B_MTXXXA(v1k5bKB?p5UTfHR8GB*j z2hGEt>J~yha<3(+{QMyDgyov@9x+gK-8wu5g3S>C9M6{00GE`7wSYS?VmY~7mo*??w3 ze^rFzMkt8qAIN$M6$z~mqC6>Uex8CJq;<-e8SmDG!*xvbrQaoN?%ArLMgtfSnn>_~ z@*HN+7z@Y+Iov($H_-q@+@F@0SViFDA(0k@qw#LWICNR2oDMh)ZrN36>Z7Sq!_};a z+^3yfl>Pk`DN*)Vk}sFu#N!3%nj|{+*XmN5(6*#bB-~b5cS9=VwfqSEU0cL_IMYsj zU@ayaf+mhj(d*7m>;)bn>AwfNhGg0|38O#%wjy9Ww%yuFSwMe^aIDc z5s=!$t8^8*7+AVBYz`Of&u;=Eal;LLJ9gj@Y$2D9^j0R`ow^#>TA}lE57Y8@c1OjZ zh;+<)Mkp@qRvR;0n$yeZVwQsD8>qM_7CN1G$B&L|GO!mt#KgWs3qz2*!x~oI#-pow zLlL*5k5Dqdwe?|(^KMi;wD|UUi`e{Yp*Artx()GmKl_Ej-_CfnDDk&54#|ON?AIJ2 zRX>+fn6HeF&M3k3PSowD9_@?|ECz^s$>39F81z{8*ZyH<3Svk26c9{(p2sg(1B`Cg zm6cV}$Hy!DG?R<2f^;)1VB?Wee6YxrQUY-=lDhP^hHC?9`i|4sNogqfZOwD(iXv#fPuIm~DakC7EqZr9(o} zLRvqjbKtG>qO@+v*k@3=L|ax+NrXUYp4H@jRrge10ANUpDXs+$L;c++)mOIBa!RI+ zt(3q+siBveDpzBA0jBuFKFkXdlft~RZB=9dOVUQoQiC@hdK_Xh0#&Ioz(W){RlNiD zk`86Pw@JFsoQNW!HfZZWo8h+AdcBcH zQCcx~F-7a9{?qfG+pKmwb|hv#T6_)tj9#G{Uw0~Jg0OEPdSr?M(6s0TZk~<$u|lVu z({3?AdjE#sz|io7J7v}KbEoDnnYKgqZ=zIjy+tb<;FHHeUItPC#p^V8-sx)1@Bt(5 zt)gFB9G3RFVQ2+=TxqO7tzbR19E3~KoKMu}qS-Bx1!77vI}gj5s-{CR%m>biu@2MM z_twh?;5`fSU=Hnj^xTn!*t+=$z{;-xrP?!3aV50& z$32Pfw1#8j&!W%6Wh=JS(+A(cTHa>D^aWjI%bKOJgbqo?QF~v+l4n&J5&<7bLdA}< z;ss}T4d~NgBxmxS)G~0YMhY4lF^x7tWbW9ZYl`bnpCR-C&3I>Hm&9$BWezTkp98~p zE~%s)p0_phGw}hs^O8hzfrcF;%zgt$scYpo1S16&~r#{!tn)V)v6gnFM0>N z+s-XjfAsmOac+&PBVXi`D{S}9Zo&qfKGXiiUl-GS_rrnZ{1aS3@ghvptkG$wG@_hG zwh7Qb_|W<_^xVn|mB`cEciyletxbi`5Kj3_#&+b-P2%G`glR&;ue|)#=yX2z-zWQR z@d@JSIK*uEHwj>v@^HAR1`IU2hmsT$z8^O>;~fS@%lDeTUtu?29YNw(F*KZT24TKd zQb9<_1X6Kc%Zdu>jZr-hl=O8MB*U~cVF4?US|Y(esNIS!%BPe&*PGqFF(YOx0H?!2 zCg;NA7x_tIK)#pq6==~%78Mx8=D6$b-pWX%@H%e|^eYT-MggT*V{?|FvPD&^3FX*d zl<{?1iIMV5z4l-jB1PYL6^ta;;^WH4JA-PS>LjAP`PY|1C#|s90opeu5t9^-)8(_| zBh~q{jzvBSjPedRJB=V?%+;cmCNfsNCU29zNq+jGI1k)>MscO+ahZJ4a@Du7QWSo? z2BL2dNgH#~3H^`0=aI$5RY_v;tq9e5hWV;h0WjfR-z7`t=M4r6t~i*7pdWnr@U@jM zzgKS0>${Qu4_vW2qj|+)b%PUmsTOHM)OVy2$=~v7njHNJp%F@5t4axT_ zw$WFy!WV|HpkVM;cyr`%NKcvcrll#>OwenbDs0}q-pX8x%GYR4E?{%pM0TcS^kU%U zJ79lUvZi-U#%54@)|Dpat^+5GAXJkJh7VU>5rF~LUiZJ)DBKjScJ92!ULZ{#*`j;7 z^te%2CNRa`8wK4K(tP&4Pz=~9YGTT0%tcCv*R313zfg;GRBy*OJ)s65I>m6#)*2Du zo_wTSwH|Fx#RR@o_1XfrdkIqh2tQT^rC+-_Bbam{0q8zldd!q~2^N`tUQt_&oJG~X zRw2y z555(FM#FG%w~wqpQXrJdaV75Jt40B z&z=LdFn)Rv(M6u|e@ z3{RQs47YHB0w)0737Qw>hbXH?94n!x*S((|c|6omyPZ?cR&ivk7eM`jKnRDITE{YA zo~x`(%^R{-pPw?kkGRwu$Vboi>C)7rR^m zX#`7#8pF`FCE`oUt6T$of?>+{ODXs`wp)a^lb8EW+yag{S7YfJjpIx$>yw4T0Ks5! zx@LP&0T1gme}0*Au8QUF(r~eeouXVAAHez)!OAn2jy%yi@SPJ1BX`rdst?xO{5r+) za7DrlKDvj{3mg0}8(@L(mJ+WtQF(*i=0H=+nOvqxKc(dTF zjLoP!V5Q9+O3xj;r=^O~Yjd-`K3;)>$?hl~4p>89_>V@+cSPF!smVYn5%6Tj=V+BL zPpGp&31l5i@|z7w1y@vWEx1Y)B0=io1Z7{i|GcX8_D_X$v~*y`=crl~u_S3UPcyT2 zewL`sTV+`_DGZ?<7Nbw`dxb@A0zk~@jDl&UsSxGs>axFNruLmOVxo7njo7zu)v}+9Q-oWO)hs3~f9WP?7WdFB^0G;xZaMT~|IPXjl*3ggl=> zb#^zrx*gqUZBzR~pswBfuXd3r(_b9OX#1H~0iDR=mO2(_qkBNZEw5~SS{kP%sci-nXJNGXlEVr8DGD8_zu|dSHGxt=bu? ztFe8hxqf%h@v*~815gMK5{j0 z6)Ox!^eG?YUf!10#i)<|FNrviMLYoOoP57^_oYS(q=E^2y{rabF>j`s0x_K?O|qIu z=iG&|b^LEf427Q`E<_&I(YsQX?EUYTltmsdBcU9#A7oF^y_sw#W#-U;IpHn zY&iG&e9fx>LFkPT@<{(ZBA3B7m}H^WTusZBUEe_7PqQYM`Q>w-w|z6kDEf5f>t+1R z_;j@e{l$rvfn`053QhQ&6T<55Z#9NpFXU;TIT^Vc?XKJ2Z-i(_qg+^F@gO@)2@g!n ztV*<~7sNU;tRl$(6;ln`QB1u5yg(OegdhypuNNO|cMh4+dkpQ-S_X&#xzI*QjsN4} zgvj%QR@dF^!E6ORU#_6%`Pt?`jbYbQsmLSX`RVa8&Y!=NI+(Q&gs zLALjyC?UEzS&0^LBlA7K7N=iV)tU{Hl-r4d%Sr_N5&={3vJ%J!c#MZ!KXSb-bD+!V znxhf1RZDqVy~SaAbx_wh@Z~r$9^$Kpua^+-8J279WypE|DLVKi>jK>-L`OPG++Auv zIL__uh=H2yeZ0=VuiY8X{`uDklwd4m8dvvtH^&GvP|ZXJZ#Zeue6T-1A1)rj!28nz z-v{))SZQroXMx!b>oLFzkn9@kk>X0k%85|yWgB9M0N=DnB(^L_M7sX-!$Ts zCFtKMWV`j(RO#!W)_$teUo}rN)&^hx;Q}};ZEQ~zm6W_-^)-3Y$A|ctO;tX9ukV$t zcU&2ZKD3J&Qg6PQE7ZO3PohyB)^~^<_5<3OYEKo?piNiH!-d!|hgrzE%p;5?`mkDA z%Da_tKf+5R@zE9OW7t^ZFH{QEkyN5370a{OP64n&UM48`OlCbyo2vCKcwpk9%f4Xu zGe9e9`V4x-_LjRr1+`^}h@xE3vQ z^ZLzU0ZIARS?~JCOMU1`NUv0UApz?@42?-=%u~t(0?8U30pPrn-u0VXG9m!& z(`BjQGL`3^M>S+DmE5R6bq&4wd`l>!}f=L7{J63;Z1*a zW=~&}*CHyVveI-;yx#;cNC1EINTlnV|2n*T6tOUyjQ%peV;8*{e)15^{U`fr(hR-U z+R8E%nfuXtt4e_=5Bz6+M;+a0$?NQ1n?80%f|$f1+q*d>t|!27Fh^gOb;?MYz##J% z8^g3QdLTg^T8n%Tvmt_>PKT(XwHAcrAxj~@see`Nl~*Y??X+Eoi>Qgc+v-v23!Toi ziIY>s@#z{jd7Y{Y6iAuYd1;&GVWnUEgtSEl3XVu^qnfkzP z;k3Hg7Vc(??}#h_CXM02Ak^Vjnx)mZ`QGT|JaF#|805S2rO#gAi3Jdr&K7A!Bj_n< zkf)X15%@K9BD=~dp-~UxJiDlixbDxE%i|X$&VZp8lV}yRn%&C!@&mMYD^lHt(%~P< zRy1ezc)uPWlog++d{BiiQP0O=^iD(yDH2f+OQ8o*m~z*;E%0)KFDxi=vm z>L(AITnsqUJ_>$UE3c-PHdtaoLiy6`3xn@KuP|v_EEMe3F_iX^c7hX^3u~s*Tdo&(lY!=5bJaRgaN@ei}B1_t$|NgSyO;g@C z{{av0)RjgbnftATXtP*1SPOht%npe~Rcv293!ZU(?L~Yp_oGT#(6Jyx`*OUD077>Y zYu6|0>V)C1>wDcD_`vY>vzV?Iv!BR2aGi4H<_qf2y_iOizaQ8Zo2sm+a;?xfK7pqm zxnSP}(ck5aObvB*Zct1I@K%jqydd#X!3JOrzf0Is88l&iml}WrTi&gSlVBsp`C1n( zFY?`Wk&8+L16BG~R1{mZ92wcI=wk&5 zVh5c|lCWH$W+0s%l~QGq)-Y0eog{a0ViDd<9?QxI(hYUY*I~Kv+6?ixpaiSWX(-qq zB{InORBH{nL&Tn?h&p6t>@|u97mG9!`412l};*nn}Z*6ZkH8gN@aq)V1 z>*#=DNCcF!c;hoO4;x<=37LA#^{+4se}~wH8vH-Pz5*)Bu4|hV5hVpwIs}xGj-dpk zLqtG8x0qU24&{el8%a^iOS`iH5mAxzjAv!1^VZU_WIIjUj>719?vS%JeQ zE3f#-eI|qv+elBaYC6*XOp(2si-%`PdBt)3PPZ7`AQkp?Y|0VfUp<-HGZDwTI%0H< zw@xJC4_AW;GkIfjbTQhgD~q2vOj~{(FT9Z;!2~nS{n}|=AfAQW5rY|H87=>r*&W3d z&*%WVMDKY)(9GI?GZ{-* zz7f&-O_vC$Vgd#hijO4=ft9{ebtboO+!H^~hy+}LX8qxJ$N-Q2ieQYmT-lB&PKKZH zADo%z(aeH#D^01ox3-Cb4aJ$vZ>wyq=i)HCJrXRUjx~QRu)(6DX@9?@-ny77ie0t8 z)KhUD1Is=D!y9M)5fR+LOF)arGFLF{*?f`0F*o)bl^@^KaLydi{Q_D(mtb1fJZ?R( z+Lw%?tw?)7aAe@#l}YV5nNYBnmv-w8ndC~m;9B)(#m+fGG53BH#=m#_;?3uSAp-|% zj`!89{MC!P@;$Bj{l_8la8Oqc_P6I^Co$F{@1_)O`1)v3^LshC z>bd9v`)*s0;ylS($2e5DFDk*ifMNX@M9uAViY~&9`anZuE<~ob_*Fg)%`b=K!OU+r zD;2XD9I@!DLh5KL#38{Nu)$r&_ko{dG-u6a9f%zn51--!RK@uwv`_vc9^I7Ro>*nU z`QuA=vv#8RBw2_>73soaR*qC*ZQlJe^^R2ELZ8AH^gj#YbbaCq8Vk?%=f1@|wzGVu z6!Sc`Nuv@+rE4vH&M|iHA$KzKTTZqwbt?&6Uqf4RcACWa{WQO{W7yHC@?hd>Jr!8p zep<7J8CM;*;YYiuO0rtCJ^4+a`Io2E7xd=O$TtyHw-1BVZ@}ziZYzW}53@N%8;U-* zzn`09_sG_qO-MR~;i;oc;%&3(%$(2fSvKPg-#H7uw)yg*Dw^v@+(o{ovF>pDX6yr5 zYm*cnJ2yjnNIL2fcWUpa0tNs6+y*=4l&779{>7VX!2yFYnE{+65AE+ipnq)pS4*1r z)TbuUqgYy2R%RA$Ov*-4mhF0+o|@pF^nlA$!KRruS`ZkN(17x`baLh%36IW+p~1mR zxtUN3$WqG~rdjmQ`Mfo!v&h5cBMMo0GM@~6v>I-P8T@X6tRO)~tC^0EMXYhd$-BmP zYw!4A5N`*gR46NgZa_O09%=b3X^Kqpn*PYIgu?I3{hMDnJbb73bP7?ShJf@1zHm6W zJt?&kF9QkFr8t#>HOUxJJt@-Uj(dUadQ*n8?h#6j)uMnLJPP|HZ*T2^CX0^e7D8@9 zSK^p(WAV(cT=C!mS}AOiO*Ft};A!N(Z|O~!25Wo^Mgj|4tnrOGFfS2tG~?85bI8)gdtLuOb_8d3!&~ zB4y)d1epws*YNR=R-q^ZPI3uvBd6PUDHMM!lb@V^`;3yd8CUx-I(fg~)|`HoX*L1D z2_s_B6?N01ZS2FZJT>N+ioAZ+OS+l4R_pAIo2%;M_th0tm)jttxu~ z#ge+6Y>9hBMh;BMU!V7bHhd;NuU61KW8BN+)jH+8@XIHInIfZ!&CZehQwX|Hh&2+x zPGTn-0=9-IP9(70^(E^Jz70r;?i&P3eeuV>HbJy6jg@uixo#y0
zfyRrhC+E6KNqqH+&qW|U6Tei7$`|A5 z*Ss$r$o5)QS3hsUK2!N9l-|WktUMT13#Iy1BFq#xQk3F?52exe+Z#r?-Iig4A7l?l z2uYJz(A~o|dvhtVKlqD5xQ?(jXt-R3LXDm{;`Qfx-$%hUzF!_Q?`nLt>$Zzo?s^9$ zm$=O&!X2FX=)o`TG|mJxwbXi&wOz*H@>?m-WWr10*1qJBEOwd@xFP6eh<>bPOWsaL zAd6qan}n^!U9vl$H;P-=p1G{%xfkmBGFGbQqdJ+Wp>Z+XwVjP>eqOVT_L>`g{Y_`C zrajS@29{1+XnNl122<#9%)je$S5VM6!VZ7@_%VI4>Es2_t$O~eS$)JN0`v-B9eG_H zHF%s&`cFnsOAbg&w@&D}9Sm!D7;c2s@3iNnw#lE%x?Rjx26Yp(&Ve3|ejC2GH*jzV zH;)a;A4r;f>Vy24e?mw(zb!RQ9u6&kkKOKPJY`N_ZM(4TjdLr~kw)-T7qlB32TmB@VUTDrrXxre89x6al9wh) zH?KLxNNg9ULkdVNYtmt2R7qEcMi&et7UPhaE?e0v;V4WF2Sz)p@#VU&zUneDJ(Q@@ zb~sYQn|e`pJ&}5`?{yo+%a}3?TK@cC zYZE`&Svd9Jl~D>ugC(URHCKle+UZJVT_J__n2HbT!UJX}9?bMq=-OnCsnoa3tnMxe zjFAVW*6(ag?&OK}`t7`dZ!np}hw);^N8Tb)qiYs)^%;AbukhYYi!&1XmHnGin2Bc1 zG6uPlcZQJXqr%2-`zGVOLMo~3#>!YH|0z7i#{eQXZtChIc%Iw7eIjQYAlGg^r}z*c z){7ZmJkP7MX&}J%sk46YdyOF@4_Ro!=Z&#tWw?A-ZoOOz`Ps@yL-iop%Fy_{xpxHg z>!*;}cVCCDBeO5mJG$I?S1n8IKe1+4feZyIbhmzTE7NJu)? zXS-LNE}d`IKgZg&vh5j@a(uPp!fIFeYI%FawKA7fU3b@5T0*6VY$YqW;(?UUq?krT zA=6L+-D-ld|6k#X3+)k+!Qc@j3sp$yQsK>1fv!C%xh&~-) zJxIgj3HmO|gt-p$TztFET!xTeX_JC`2Ya3Gv;mdAUBek5`KD3$8W`hCyQS{?>=gc! z$>gm&=GB$G$t8T00z9T0&P9ZeEV6uu4GNrJdErL8XLYswEOs$os#X`W^ZfD+w;7qD z*a%E-t*g-EYd-LvXJ}sYSw1D+Mq;7SsKMZ--;4ZR$w{_|Y=sUK8z6R(8s~(g(JgHA z>9XZ4zs0xQ3Fmp_WXGl)oCqcF9>q6l!S=vsTMSLf3y)re#8dy|j%efhi;lhL{ecd2 zB>z-(dgHtn^0D*#ohV=LC%);2vColQG}L=y0f^O@s^$7RVLZDEnFqHCzdLJ89Rhkv zz9Lp1%i*!yWkc%1)>AZTzJdm~p*7g7BT9M-OFtF`KYahZJ#$&wRWl9xZT}ACfsa@-{L->q!cWsKQy@9%*2EOXk9d3oi&P{uB2T{omD%5t+CJ%S@gPQ_hdQw z>U6X*iOVcR`#V!W)KZD3vN-kZQAo2OwJhXzT@W9(!kd;_x77%5{#Kz#LF}o`Pfd|& z6mpyvTljC@^);sp-;hE6oR2L*ci1f~G{tXz&ye?@!u_P1%~J4X(EPQocXhf4=rslF ztJ9*ZTC=_+pvwSmtp^luwTIJP+u&>J5p;Ynf4>iQuDWvSx7RVR2)5tEyZ^3}@Gorw zZ{1MPDnZd&?{zqC29||?^PosP5*k) z(;MI1=$;oJeycE#ouBws*9AE6`rF>vvloanXzSG9x*G>KXSSUMhL1?@ed)bQqXpGI z%ZrQkCrk0y{HW(ao}R&756}jVg-g!QST&TTtf8UNCO7KcdPIM#(=mY9yRcEf7W;p2 z;$hA}{y=(hS<3HQ`b99`)bU1HpJ80iCb5Q7mr;gG{&Xb1%z2Nm@V{8?|NihUlztxp zjT3P*UmKTDt%^pJRcs`o+od?ZDyC4^^mhn+ZO``FT^{VV**R_7mgAuw)vy(x%U+pN z@S5t;bmKGQQNLr6{{W45B95VwM-c;3jDJB;gCR`rr#2^so7en(aPxV8NlYu1n}v`w znq9lw=HlwIZW8Xp7gqZ#9UgcIlSe50HOg#Gc&E?xWQOcg9GGxIZqOpZ6F3GfCD(1p z)OzMl_Pf~;Ns>=%*h*;o5BRXyy#MWO|1%cCP?U#j-1SyJi*?98zSTTSWVLEU=dMs^ zqr=0gk$52ESbZG*b}}x`W+3yKSn5{2S6w(Y{d1 z<%b1!`{I&g;uLcWx94am+8MZPlfUu7$R9`xBTe|AaYLVK4adczMrygH%e=YPKzEIV(lW3mu$aS7J7NQ4aWCA#~J67oc*3B zxppuz7)epuQInulD>5-r*!_h{>jwcKGh*<8{H7!g6116t$AMR<*Vy2+rRz0^h)oj? z@Uhb|eAYBT>%w>UR`^!a#azn8_9Omd-sB~bf4Z^lFVrKj8sX0llK&JNb3A-S9l&%Er}Hi0&Yddu%A!PNJld2irF$ieq^+$t{|7i!@~qR3{P3_lFn!E`~1?g z3jD^P|7>;XQC56b({tz(G)hX#d-mA|w-eiNf5I)EE_OBOG;B;f(Mz=SF)2pjCm#=Q zG#mOfl4#^4H3Dt4+Pj4i*=^jmf1KE|gxOijal=vXAMDlc~sn(kn zy{{-rb%j~}ETD0FW;y9Wwe<9%Vtt2rL>&NdGNVFb&B1SZW;e8YOE#YAedKXl?tK zi3^BtTOhnI-FHZXq+QV!mx0~vicyFdEc{g73}1|#%yr2Ir8Ygjl6%YKr~e9!fmS5ey}Zdb9*qflw5ey@#@0R2evx5 z!wwedEUns}Gif;c8W67AM}Mb|LlLQ(wC%zE9mJSnvLMx`+P;%S+eBrN1i! z#0kNzG?jQ!cBH>b1b=k-9j1Al%eW~t!?-&CwO79F9pO<8vf)Nq_Ojh*4MecfAydL` zf9w*grQZIal&AA_=HQlnD;xmB^b0ethcs11LRn~M<^i%0@$cAwWC*>D#ewzIPX{;u zAn)UcK$~%L${7aa0kH-CMWHiqg(b3o%`sNZWHl<|;_`vJZsRU5okdZR%!C#+lp_Y> zb4SJcl~;rMjfwBc$l)W`n)3Qn-L!X~kP;b_n2z}&_}ylMA~)}uR#z78v_Cqw;-9Q^ zJ}L8kF=Y5K`RTsiIJ~N4V~IMBsBOxzc zi0=!FV1mOudI*witkliHk|0SJ>HZV0CX#>dxfMVz;aYt4QZoBEtx%K z&q6u^H1j?Qq|AQ`*IMl5c_YHcV@&rCcP=JPfI^6SWkG*GGiP4qC}A5o-Rs58C{^#Z z?lf)T)=ZIhqpJYYR=G)zBi({>#v@^w)Iby{e<`U_kNFJ-55q~Y892r8<}K|uLE{gi$Y zRp7yqO3Bu604@xKgzgEz)-wfEts9Gvn7Qf5YsUaHY_ugOd%xUV{R+pevGios##?A6 z+bwOc{4e1o_9@p1xHB5t-d&3HXNrx#vyh zkCM^0X|V>@KkwgBEW-ZBdJ-9i#A1DB99XgiZq{KCsXIh7vl3Re<>xuxQ3eEfS-tcw zwOQeZKz0HXlL&};J-gQGn{Nvxy{o_-Axn)66{`FN3iDDP`Qg>Df~_qK#-G3Ok~l%!|v>Y6Bb!U!}yxKi1R37>@t2Nls@Ou2o| zoc_oGRk*9z_;#iKs98&$(VEc5ZGty2Y5oKBECH(X0%(2W*@e8OxKVGVG5M&Yswm_^ zfq&b2)G`42HO$c!z8^sMJb|<9{JZTs7)$i;P1)C_5q!5%Z}Qb%ZB6mJAGOY6>9z}O zi{t7vQqV4JUuD3%V=TG!rjm|!4~42QiyW7{gJB2tnMH1^WLa@W)l+Y$nK!0i@uZhn zw&%Gq)YY1a8xJFaxvk<+d}9@Nv+Q)1>2|tk&6aoM86}FBE478w_8|~D`S`IFEHD=i z=+~j72+r(M&ni)i>Cz&ex7+x9kNm#z_1j?`-7pEtb9!H{dWhSq%hr1Ncs|VFBgn8C9X(8hImK*oX6GBa{8NYz_XgKi*@b^3`Bs zUt9`+(R~u^w!<ebfdxJ-}&U~-7*9&liI}JWcQh<9`{p3H%4x#`W=LrLsLDwwIiM)m@!Hn%r0aE%*%t4sZihA4f zr8Nue{>LJxpz>sdBT)l^jO=}kA`~VIX`1M?DZw5Mg^`~ojA|RT5 zBV@NW@bKYfdi|`ecI!5a7w2uGQL1~Sb}VSq!{LWy3UJjIH%u6Z#2q>unGJ3J;R8^m znm(XBM2htqR0>EY(G==3YD8tJn16aEp$qO5cwy_5cOJ*tR$XW8xLakM?$yU633hl= z?$Mv7OFYd@EE+opJvTKk-nSOs`3Ze{uhInRRGEK)OFa}R3lsgGDg758V!q3W%rH^o z4&(?P*lI0}zgRBki$>fY8ZfvJkQq|hba;8rtbO)ixm<7Tj5w%i-VHU)NQZ`;_t)vd zgwKyl;6ccFxtGQ_W};T@Oz+b*5wWAj{ks<6x6-5Qkb0jRgUQ05y_~GA@MphM5nkmy z?KZ&uc_X+wdLo7%F6!wo+^5KC_pH%5D{oIkz61dCnXrFxz$7p^c^e_ddWqxg^ zeTs$>cYfhr!ExZ<88F)(mnVy5u0o|w?oUy45zYYKOXcq-L7C@H|G7tlz}l6QpU=(bFmwP;(RK?baTm$MR>6M{0AAM7Vp> zg_o4Sw8+V6PE(-{Eq4FUb+%%0Gw41S0|esM`~~wTBXKb31<6t?>RS8xx47I&X=TsH zKLao@`P2dU?d|RNfHK3j?B2(q$KZ_&ZC}I$F#{4iGyhU$Wy+Sjh8_Pf93q(a&vOSgPkf)e?*#+sgiqn}l+f?MDNck11lGkL* zt*T+tC4{u*?I(~;AU)6e1xGg%8hRVsCUiM$+rAfi^gLV0H=SY>35>N&k zY+okYqFE7CTn&1P4>X{8jd%GLZ$qy zvrRG|Ezr>6FRnJ6^?!VPt#f~PoOL~%lp9j0&DzBf51XIG5B6rx3L z&oyPOJpUv$YQiI1GZN<6G4)m|J>*k~gb!B7gcASO@52Jy(-O@1-w(F>k|9QBDiJ9G z#}r^k9c23@$9hS5OOfGr0}&g4saArj-xp#?hB0y4+`QQf&p^#otfn-MWxpIQJVi%k zC&q>GS;rZjE(5Y@s2Qb)xn&DYTa$Bsg);}ul-{f154Ax>_dyz>(A#(w{H3zrB%`$R7qRA5Ouj8=!W?^V1hP zA6AhMFHc+4XTSM85vWc4l_mPu57|%@+)&X{IT2&S25y3qJyi+$*P}TI6+ilzme|B+h7AiT?sFqdnVq2IRQPYXHqV zvkkgaK63mEIb(N+6+M>M0~Mnc&=pWkvffoj8#P@3fb%B5iwM3&GM|mEiOC{RezLN( zR4>vMcG+FXueRokply9g!U;{51Rk$#2_*Wji#`Bo_H;j%2SF@WkJ2qf3k3pB3ikk6 z|D9~@uaP|4!8&{b+`;19bCK;bjb>Wk6LCxrll8_Lx4j`!xKt}?8}`{mRpj>;3me)C z8H+)H%Nmg}wqL-pm&i2rb=Wt7PD6u*f|E`ohGtPA?HMaZtMyE`Sc~HqN`WWzwhvuq z`bOLx8TUpPoikYm3vqV)>C+Lr+%_Q2dilSEw3;9N4bvCFy^WVvAM2i#vG(RWEZDv;OEZOz z7uyd_pjz?2Z(~L$M|;2DAYp_`=<>1p%^xcSELdjzPvY>l5DJ(zq86yW|M(%UzY4Nb zKswF?WI14@7JXe^Hda%$xJ^}EtHRH5RmcZLaC2O-757(fF10%H zk@*!o`bM;X_V`pIrlBCU3FA$eqCX!+!b(;NvjhUsCm|911 z?+ldHf>M_!Bv?RJz)0TX9)vvZ1%KOHn%C~kl9jX9bt+(jCS_C7?qaRul1`t3Qb$we zn#5gu_F3>d#CXonkWyQ|KOh?`c=w!DKUMoRNejNh;53+8ITj~jk|MYQwH=6_V(h?~Zepw8s zh8+SCk0@r15rAW&qo=&CE#N$q6?;bCwbqRgpUD(Ez%MF|h|!;47n%tVPdA?+ zt6x&yqR8Nf4!uy#R9=|fso&=9Qu}8KzhDST#M`3gaEcRY=mM29&2kftfXb-%5$7Q4 zNs=O+Zhpu6hby3P7(jD@Ur&}mh7q{TB4m%H*kvqD6B7zpl+!ljC$R|8< z^w%$;oo1r;F_1AL3XlY9CT2ZxQStHGp!iW+8|HejmXJXHD2@|-qw$Yi_O|MYM2sLR@$9G7WY+Y zNN2Ek?)%knP(jJG;I|^^`ExGe_w@n-ATb*W>c@%J`451FGB%_4Fryb<6WmrQz|_bF z^x%D2uN+>k*X~^)xA`&9CI@`9{flCvQx(t}AFKv!J_QweS~~-L@b?h=Iy*Z%I%0u= zrzgbr{|Sx|Nu?+Mu>r~rund5f0YCY*f-nFE*>PSEa`a0d0_*kPjPzt{%d-B#G1$Cc zB6*4<#ho|o)5maS zL{n+Y`Ne<(RXt0ro0!l;$iKQ{7>#+s75_Q|6ByS5} zKCxgMncq?DwqrLm>5(yf7G(Xv9i5s?5g$V)0Ocvv7bE@-8vc8R_+U~@UZ(f>6Y>J<&gQ2 zL#eS?&Dbb4onbtO6d0;IGrpm^dc)dKXn&ShtY!}7;nB)aWEUSE+qBT}_S68x9wK_C zdGXUtTJ+VJYH7u0i`-d>QJeK-b+`h9nW-tbNXfMnq9iR_RJ5~p(wbEdm@Q!TE;#Y? zgWW*INBPgoyFiLMi>r(W8EC}L9#WrRuXuKGw6@ueJZDm|H?v-5-z4|sJDpEJF6&VX zRwG9gh|geE)klXLAroZ~kym4To^M7IYZ9qgHUe<1na8z`3^Nc&D6nxXgaO5O7K}>9 zfb&HzOtN|DB;p5a@O!5=*UYrhuizX+Ebk96;Ln&RA9K_>K78Kn|9yy$XSnTG{3k(WGA(+oqLUiFRMM1j zEggxIIpt5RL>5^|-Naf0$^jYcgGy2HGH%F(g|U~%tPe^aP`rI=6~>)<@ghtOzD$_@ zP*B_%M*MQY8wH$S@b8yc20qg(I5-u8U9W*WSjuMG$lAJ>>#9%ptE~2Az4NRRiH=#! z$T0SRvmcS|O4>{yeWYu#4!7Kb(2uzd`tDwd&Chd@w{^d;2|oSs8qc-N;jI0c>XU>; zKBq8SSE-Y%3f|zcJ4(^eo}U4c%QVQ17_?PV3>aG&9vU^ue_t&`?E;WQR*EbBnydMR z%LFUZRr zP9S^q#a5Jrng5h$-dR8MxYXb~gC~8W>kvz_YLOYD7ne#`m;D?u$}HLD@eN$kA~uN0Ls3 z7u~SJj`^`sNBVfPBmJ)3vPQz`Xm6D~2>M-x;vWMdzqPng6Q0xIWbf^C3k8n)pDp>< zg>9Ia?jSg8jax{FJhV+s%>yXNKO1v5lh+_o;nV3XZMcvYb*#hpg--dntgsY+u?C3%z| z9Bh2~IcfkxSRjWzkSQZWN(?{F;uvi71l_mi!x!U+b9zpe8|vEq1RQ(|WE4rdP*-%9 zO1y-3v8O{?f(MANvPTI<-qy2y+yf$Z1DOPLDy!X3gmwG+9wTiXDek`bea}6l)sLfW ztXVFHI6DcX*Ecj=o*t~r%gfWz(H$Hdh$P!sTFR+`a{+a$CN6-fitnD>+q*jTi*>L( z@H%0?LSC8F?t{+*@#`Oz6v}7ry{%h5oX?`d8+o~?DpKpPzWI~g{!%A!y8P{1eV2zl zAz#+!5|`q0GRtdM_sbTa;+mdktGy&dOJ_B+ef!r-R}&YpJn?n)oY28H^eyfZV-H}d_lOf648Mvi z8zD)^Mv1u|XpJ(YT9-j}gh-SWa{J()7FVc|(XYa=|7&xopIcyn>R7H5@0hUSjV~cbe9@IBdL_V86<{8g^KP3^j7q)bcM* zwIkGISO^yx@EaOw>AezlGie*-+L!D!u+OX4qs>D5r|SoNp!>%IexmGJu(p>6Z2#nW2=Q5>=U z++exs1)@Ut!ouaA0*wg)P2YcZo${WEQ{@>R#p`U~El*1`gF!x%r0^64O`3|C*e9wLnxV zl~`aA+G6M}*2LD`o4VpH_Ws#`{|b$ISy>)%kvfRG&Meln>=vXra4w=ueVFX87K`X7 zunFW8E%ft5IlcZ)p(M#~YYmL9iQ!?>+%oOp6awL~IVk{p0trk_hB$>h8*p3we#^

x7V1=g|d4jS)AF0WOUKk2jV+}LgVY6VK5tKUi;Es z`*^n?mmoJL%1JqW#`adcZtuQg9^n)aO&H27qZ^uaT^eJ9lc@*3BK5$QkXtH@}>MeA{5hC z#Ml6%;&+OtRA>YeaGJk7A}HVPKfmjTBuh4V3VYOjsp?9ej@~hS4qkJnqbMily(PwJ? zEEwzlN{aM*O3%jRXNaHs=BZdjb_AwXulucUmG$-e3eQ~Jas9CJ{ekhxMk9;=Te-#< zO1T!QFsRT{K{v+ZORg79DA&69XmV*xe=MUn57B~ygDFGXh6r+m2UMp$DoRS;F(WSE zTf~F9rY6Lw%dGLQ&f=?fEydx?TRh)C{r)T-`-uUWM@L6T3BB^%%9IhZ{G6PeFX3v3 z{M5+TaM;vEPt4H`tK%GIZQ8#*%lLGnUgl|0U71l^@2x890~NswnS!RL>W5euY3P4C zdE1XDf#rM$>?7n`g8d}o>B7qSVNjao3g4rK%OwllDYhVCH}GG(bR&je#!)bLp&Q;l zF;lOZtMhh{i}EzQIjuMFfaFR@8&@84!=L`6%AjP@*2}y9_>!@Hj92LwO*yuX_H9WF zRJ2H!hPW`O=JSB6tHTat!p`AFA)8(W$HL{J+3L##sN!V2rqgBYud%%s?|7o3z3ztD zRK6H=X;4+U{l|oXXH-dzDg*1#vBI(u?OjEdMw=;X%bzvvelDDx9Nz15IA9m$k{m5? zd#47xA@kAMxS9ZK>JIbK@S<7s+OrUni>!)tg?dQ%qc!+JlG!E6`LEgNe?Sv4YGt%A zXk@uY&Fi=-z2f8-Njkq4^G4<#D0g&q@g(+&My_4#(!D)}_1oF&?Yz{wvJfM5ew6&6 zn&WPf9#YRUy(e#U^yj)p>@wLpoQNw_@p0@j#4+tIj>n-pn9_p@tdw9*!yuwRMkXgt zebIu`dx_AVbhCN4wYizhiAfgFA33sWuQ=z(R{JkTc` zC5bv(K`w+u6CldwZKg^`NWqh*v_&l#b6Jqsqz&K{@{t9WGD>V5_0jVt$ z@s;JliCI6?-yBHk|JPV}D?V+~G*b53`2ldJ(-PFPxOmyuPk7+_TL3~01WE>C+Vvbp zyN5?Ji|PbLYxqbIQSL|8(W0j>UJH|xd00r?b91mIOGnU0(|2F?j8d8Djj**1mSxr4 zCUff$&9>GUZ!3`x#*YRl9fR|^#O$=v^5Ks0L0(kB$+2n4i-5(<-I!*64^kooS7Yq1|cNUzs7&i)PJU56L? zPf-ThUi0Z0If=n#gW}@LHe3BnEak_sqBX`Yx9Oi&1rlMW$=F+DSq;<#%Ui*FhE`4X zNUh+qna^~-7k6eHv3=34WuFiG+N52_JQ}t*oR}y%kdwjuS)6W7Hg}J{x0f}sbvjb^ zXZHz@LtMtKbYUFw*J!_)gRuw<@?^?Jm8B|D0VNp-X>Za*X!6omV)oSLfedXsegvBb ztEcKq4#rQDr4rL$6Cc=k#u`6@K#nmSd!hqq;_-6F<941A{ks-G96tWirGRr^fpzo)sDA$(T`G!+?Bqa{4maA6~0GkeY z7QXI~8-dPIaG_bcj>_FRWZtXs&HnX3)89=iuaI}b;3Z&f{EtFB56e#bJk>$!{5YXt zQE!I*a-&H);6Wwk1>yt&*07$t1B>I;hdP{#xz~ufd>G4Fp9I{|jip(GPnMNq%j3?G zu7XYtB&)$~zrE(2BCMUS&|(yAOXD(YD>_+^q;%jXxf$EPGb~YCyfzvv^x8P(QWyWr+E_krvR{y

$@>_y~?c9Bf<`Y_bm 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 f>Xb4O%EyD4J3P*z diff --git a/solution/0000-0099/0013.Roman to Integer/README_EN.md b/solution/0000-0099/0013.Roman to Integer/README_EN.md index 099ed325658a3..fe0441f5931c0 100644 --- a/solution/0000-0099/0013.Roman to Integer/README_EN.md +++ b/solution/0000-0099/0013.Roman to Integer/README_EN.md @@ -325,6 +325,31 @@ def roman_to_int(s) ans += d[s[len - 1]] ans end +``` +#### C + +``` C + +int romanToInt(char *s) { + int map[26] = {0}; + map['I' - 'A'] = 1; + map['V' - 'A'] = 5; + map['X' - 'A'] = 10; + map['L' - 'A'] = 50; + map['C' - 'A'] = 100; + map['D' - 'A'] = 500; + map['M' - 'A'] = 1000; + + int res = 0, i = 0; + while (s[i]) { + int val = map[s[i] - 'A']; + int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0; + res += (val < next) ? -val : val; + i++; + } + return res; +} + ``` diff --git a/solution/0000-0099/0013.Roman to Integer/Solution.c b/solution/0000-0099/0013.Roman to Integer/Solution.c new file mode 100644 index 0000000000000..55c3944587a5e --- /dev/null +++ b/solution/0000-0099/0013.Roman to Integer/Solution.c @@ -0,0 +1,19 @@ +int romanToInt(char* s) { + int map[26] = {0}; + map['I' - 'A'] = 1; + map['V' - 'A'] = 5; + map['X' - 'A'] = 10; + map['L' - 'A'] = 50; + map['C' - 'A'] = 100; + map['D' - 'A'] = 500; + map['M' - 'A'] = 1000; + + int res = 0, i = 0; + while (s[i]) { + int val = map[s[i] - 'A']; + int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0; + res += (val < next) ? -val : val; + i++; + } + return res; +} From b496d54decea1c3418dc004f8c18de8b919fc60b Mon Sep 17 00:00:00 2001 From: pranjal030404 <182807087+pranjal030404@users.noreply.github.com> Date: Fri, 20 Jun 2025 11:25:20 +0000 Subject: [PATCH 47/55] style: format code and docs with prettier --- .../0000-0099/0010.Regular Expression Matching/README_EN.md | 2 +- solution/0000-0099/0012.Integer to Roman/README.md | 2 +- solution/0000-0099/0012.Integer to Roman/README_EN.md | 3 ++- solution/0000-0099/0013.Roman to Integer/README.md | 2 +- solution/0000-0099/0013.Roman to Integer/README_EN.md | 3 ++- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md index 2ea0c42603fa9..3164f471dd8c2 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README_EN.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README_EN.md @@ -367,6 +367,7 @@ bool isMatch(char* s, char* p) { return dfs(0, 0); } ``` + #### PHP ```php @@ -408,7 +409,6 @@ class Solution { } ``` - diff --git a/solution/0000-0099/0012.Integer to Roman/README.md b/solution/0000-0099/0012.Integer to Roman/README.md index 2f57cee48926f..25936540811a4 100644 --- a/solution/0000-0099/0012.Integer to Roman/README.md +++ b/solution/0000-0099/0012.Integer to Roman/README.md @@ -302,7 +302,7 @@ class Solution { #### C -``` C +```C char *intToRoman(int num) { static char res[20]; diff --git a/solution/0000-0099/0012.Integer to Roman/README_EN.md b/solution/0000-0099/0012.Integer to Roman/README_EN.md index 20627b2887bf7..ee369a047462f 100644 --- a/solution/0000-0099/0012.Integer to Roman/README_EN.md +++ b/solution/0000-0099/0012.Integer to Roman/README_EN.md @@ -300,7 +300,7 @@ class Solution { #### C -``` C +```C char* intToRoman(int num) { static char res[20]; @@ -321,6 +321,7 @@ char* intToRoman(int num) { ``` + diff --git a/solution/0000-0099/0013.Roman to Integer/README.md b/solution/0000-0099/0013.Roman to Integer/README.md index 7cde33cb48c88..320de43bf6fd4 100644 --- a/solution/0000-0099/0013.Roman to Integer/README.md +++ b/solution/0000-0099/0013.Roman to Integer/README.md @@ -343,7 +343,7 @@ end #### C -``` C +```C int romanToInt(char *s) { int map[26] = {0}; diff --git a/solution/0000-0099/0013.Roman to Integer/README_EN.md b/solution/0000-0099/0013.Roman to Integer/README_EN.md index fe0441f5931c0..9630f1b9ec330 100644 --- a/solution/0000-0099/0013.Roman to Integer/README_EN.md +++ b/solution/0000-0099/0013.Roman to Integer/README_EN.md @@ -326,9 +326,10 @@ def roman_to_int(s) ans end ``` + #### C -``` C +```C int romanToInt(char *s) { int map[26] = {0}; From 9af5be3e73f1c67ec660ba6c82ca36f08edad7b6 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:44:46 +0800 Subject: [PATCH 48/55] Update README.md --- solution/0000-0099/0010.Regular Expression Matching/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solution/0000-0099/0010.Regular Expression Matching/README.md b/solution/0000-0099/0010.Regular Expression Matching/README.md index 036304b588623..e9acc4602cc81 100644 --- a/solution/0000-0099/0010.Regular Expression Matching/README.md +++ b/solution/0000-0099/0010.Regular Expression Matching/README.md @@ -365,7 +365,8 @@ bool isMatch(char* s, char* p) { m = strlen(s); n = strlen(p); memset(f, 0, sizeof(f)); - return dfs(0, 0) + return dfs(0, 0); +} ``` #### PHP From f2beb68811f9f3cc02e57448c6774730de12130c Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:45:40 +0800 Subject: [PATCH 49/55] Delete solution/0000-0099/0012.Integer to Roman/image.png --- .../0000-0099/0012.Integer to Roman/image.png | Bin 102928 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 solution/0000-0099/0012.Integer to Roman/image.png diff --git a/solution/0000-0099/0012.Integer to Roman/image.png b/solution/0000-0099/0012.Integer to Roman/image.png deleted file mode 100644 index b322a729dcf0b9085bac398b7f0acefef27a7865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102928 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

$@>_y~?c9Bf<`Y_bm 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 f>Xb4O%EyD4J3P*z Date: Sat, 21 Jun 2025 06:48:44 +0800 Subject: [PATCH 50/55] Update Solution.c --- .../0012.Integer to Roman/Solution.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/solution/0000-0099/0012.Integer to Roman/Solution.c b/solution/0000-0099/0012.Integer to Roman/Solution.c index fec88f7376bec..1417b40e44318 100644 --- a/solution/0000-0099/0012.Integer to Roman/Solution.c +++ b/solution/0000-0099/0012.Integer to Roman/Solution.c @@ -1,16 +1,19 @@ -char* intToRoman(int num) { - static char res[20]; - res[0] = '\0'; +static const char* cs[] = { + "M", "CM", "D", "CD", "C", "XC", + "L", "XL", "X", "IX", "V", "IV", "I"}; - int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", - "XL", "X", "IX", "V", "IV", "I"}; +static const int vs[] = { + 1000, 900, 500, 400, 100, 90, + 50, 40, 10, 9, 5, 4, 1}; - for (int i = 0; i < 13; i++) { - while (num >= vals[i]) { - strcat(res, syms[i]); - num -= vals[i]; +char* intToRoman(int num) { + static char ans[20]; + ans[0] = '\0'; + for (int i = 0; i < 13; ++i) { + while (num >= vs[i]) { + num -= vs[i]; + strcat(ans, cs[i]); } } - return res; + return ans; } From a33c203bbfdcd698ebe53be02fc07677c8dfcfc7 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:49:03 +0800 Subject: [PATCH 51/55] Update README.md --- .../0000-0099/0012.Integer to Roman/README.md | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/solution/0000-0099/0012.Integer to Roman/README.md b/solution/0000-0099/0012.Integer to Roman/README.md index 25936540811a4..c7151c82720b4 100644 --- a/solution/0000-0099/0012.Integer to Roman/README.md +++ b/solution/0000-0099/0012.Integer to Roman/README.md @@ -302,25 +302,26 @@ class Solution { #### C -```C - -char *intToRoman(int num) { - static char res[20]; - res[0] = '\0'; - - int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - char *syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", - "XL", "X", "IX", "V", "IV", "I"}; - - for (int i = 0; i < 13; i++) { - while (num >= vals[i]) { - strcat(res, syms[i]); - num -= vals[i]; +```c +static const char* cs[] = { + "M", "CM", "D", "CD", "C", "XC", + "L", "XL", "X", "IX", "V", "IV", "I"}; + +static const int vs[] = { + 1000, 900, 500, 400, 100, 90, + 50, 40, 10, 9, 5, 4, 1}; + +char* intToRoman(int num) { + static char ans[20]; + ans[0] = '\0'; + for (int i = 0; i < 13; ++i) { + while (num >= vs[i]) { + num -= vs[i]; + strcat(ans, cs[i]); + } } - } - return res; + return ans; } - ``` From b5b9d64e738150f3251bddfd11dc344917d3543c Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:49:23 +0800 Subject: [PATCH 52/55] Update README_EN.md --- .../0012.Integer to Roman/README_EN.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/solution/0000-0099/0012.Integer to Roman/README_EN.md b/solution/0000-0099/0012.Integer to Roman/README_EN.md index ee369a047462f..9fcb12b9a56d2 100644 --- a/solution/0000-0099/0012.Integer to Roman/README_EN.md +++ b/solution/0000-0099/0012.Integer to Roman/README_EN.md @@ -300,26 +300,26 @@ class Solution { #### C -```C +```c +static const char* cs[] = { + "M", "CM", "D", "CD", "C", "XC", + "L", "XL", "X", "IX", "V", "IV", "I"}; -char* intToRoman(int num) { - static char res[20]; - res[0] = '\0'; - - int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L", - "XL", "X", "IX", "V", "IV", "I"}; +static const int vs[] = { + 1000, 900, 500, 400, 100, 90, + 50, 40, 10, 9, 5, 4, 1}; - for (int i = 0; i < 13; i++) { - while (num >= vals[i]) { - strcat(res, syms[i]); - num -= vals[i]; +char* intToRoman(int num) { + static char ans[20]; + ans[0] = '\0'; + for (int i = 0; i < 13; ++i) { + while (num >= vs[i]) { + num -= vs[i]; + strcat(ans, cs[i]); } } - return res; + return ans; } - - ``` From 0a2e98cfda3c4d4e38b801d84b5298b5da878d1b Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:51:17 +0800 Subject: [PATCH 53/55] Update Solution.c --- .../0013.Roman to Integer/Solution.c | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/solution/0000-0099/0013.Roman to Integer/Solution.c b/solution/0000-0099/0013.Roman to Integer/Solution.c index 55c3944587a5e..7e3199c1e1fa7 100644 --- a/solution/0000-0099/0013.Roman to Integer/Solution.c +++ b/solution/0000-0099/0013.Roman to Integer/Solution.c @@ -1,19 +1,21 @@ -int romanToInt(char* s) { - int map[26] = {0}; - map['I' - 'A'] = 1; - map['V' - 'A'] = 5; - map['X' - 'A'] = 10; - map['L' - 'A'] = 50; - map['C' - 'A'] = 100; - map['D' - 'A'] = 500; - map['M' - 'A'] = 1000; +int nums(char c) { + switch (c) { + case 'I': return 1; + case 'V': return 5; + case 'X': return 10; + case 'L': return 50; + case 'C': return 100; + case 'D': return 500; + case 'M': return 1000; + default: return 0; + } +} - int res = 0, i = 0; - while (s[i]) { - int val = map[s[i] - 'A']; - int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0; - res += (val < next) ? -val : val; - i++; +int romanToInt(char* s) { + int ans = nums(s[strlen(s) - 1]); + for (int i = 0; i < (int) strlen(s) - 1; ++i) { + int sign = nums(s[i]) < nums(s[i + 1]) ? -1 : 1; + ans += sign * nums(s[i]); } - return res; + return ans; } From 85da5d88439c4ac28efc0b6425cc3e678ceb57aa Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:51:39 +0800 Subject: [PATCH 54/55] Update README.md --- .../0000-0099/0013.Roman to Integer/README.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/solution/0000-0099/0013.Roman to Integer/README.md b/solution/0000-0099/0013.Roman to Integer/README.md index 320de43bf6fd4..604ebaaf5c8e8 100644 --- a/solution/0000-0099/0013.Roman to Integer/README.md +++ b/solution/0000-0099/0013.Roman to Integer/README.md @@ -343,28 +343,28 @@ end #### C -```C - -int romanToInt(char *s) { - int map[26] = {0}; - map['I' - 'A'] = 1; - map['V' - 'A'] = 5; - map['X' - 'A'] = 10; - map['L' - 'A'] = 50; - map['C' - 'A'] = 100; - map['D' - 'A'] = 500; - map['M' - 'A'] = 1000; - - int res = 0, i = 0; - while (s[i]) { - int val = map[s[i] - 'A']; - int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0; - res += (val < next) ? -val : val; - i++; - } - return res; +```c +int nums(char c) { + switch (c) { + case 'I': return 1; + case 'V': return 5; + case 'X': return 10; + case 'L': return 50; + case 'C': return 100; + case 'D': return 500; + case 'M': return 1000; + default: return 0; + } } +int romanToInt(char* s) { + int ans = nums(s[strlen(s) - 1]); + for (int i = 0; i < (int) strlen(s) - 1; ++i) { + int sign = nums(s[i]) < nums(s[i + 1]) ? -1 : 1; + ans += sign * nums(s[i]); + } + return ans; +} ``` From 0eaa34a54bd5d478197ada788e450ea8b7f78a26 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Sat, 21 Jun 2025 06:52:01 +0800 Subject: [PATCH 55/55] Update README_EN.md --- .../0013.Roman to Integer/README_EN.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/solution/0000-0099/0013.Roman to Integer/README_EN.md b/solution/0000-0099/0013.Roman to Integer/README_EN.md index 9630f1b9ec330..5d93d580a88f1 100644 --- a/solution/0000-0099/0013.Roman to Integer/README_EN.md +++ b/solution/0000-0099/0013.Roman to Integer/README_EN.md @@ -329,28 +329,28 @@ end #### C -```C - -int romanToInt(char *s) { - int map[26] = {0}; - map['I' - 'A'] = 1; - map['V' - 'A'] = 5; - map['X' - 'A'] = 10; - map['L' - 'A'] = 50; - map['C' - 'A'] = 100; - map['D' - 'A'] = 500; - map['M' - 'A'] = 1000; - - int res = 0, i = 0; - while (s[i]) { - int val = map[s[i] - 'A']; - int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0; - res += (val < next) ? -val : val; - i++; - } - return res; +```c +int nums(char c) { + switch (c) { + case 'I': return 1; + case 'V': return 5; + case 'X': return 10; + case 'L': return 50; + case 'C': return 100; + case 'D': return 500; + case 'M': return 1000; + default: return 0; + } } +int romanToInt(char* s) { + int ans = nums(s[strlen(s) - 1]); + for (int i = 0; i < (int) strlen(s) - 1; ++i) { + int sign = nums(s[i]) < nums(s[i + 1]) ? -1 : 1; + ans += sign * nums(s[i]); + } + return ans; +} ```