Skip to content

Commit 8566d75

Browse files
author
kwu130
committed
feat(src): add 26-removeDuplicates, 27-removeElement, 28-strStr
1 parent 16f4bef commit 8566d75

3 files changed

Lines changed: 112 additions & 0 deletions

File tree

‎src/26-removeDuplicates.cpp‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// Created by 1412 on 2025/10/17.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
7+
using namespace std;
8+
9+
class Solution {
10+
public:
11+
int removeDuplicates(vector<int>& nums) {
12+
if (nums.empty()) return 0;
13+
int res = 0;
14+
for (int i = 1; i < nums.size(); i++) {
15+
if (nums[res] != nums[i]) {
16+
nums[++res] = nums[i];
17+
}
18+
}
19+
return res + 1;
20+
}
21+
};
22+
23+
void test() {
24+
Solution s;
25+
vector<int> nums = {1, 1, 2};
26+
vector<int> expected = {1, 2};
27+
assert(s.removeDuplicates(nums) == expected.size());
28+
assert(vector<int>(nums.begin(), nums.begin() + expected.size()) == expected);
29+
30+
nums = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
31+
expected = {0, 1, 2, 3, 4};
32+
assert(s.removeDuplicates(nums) == expected.size());
33+
assert(vector<int>(nums.begin(), nums.begin() + expected.size()) == expected);
34+
}
35+
36+
int main() {
37+
test();
38+
return 0;
39+
}

‎src/27-removeElement.cpp‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//
2+
// Created by 1412 on 2025/10/17.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
7+
using namespace std;
8+
9+
class Solution {
10+
public:
11+
int removeElement(vector<int>& nums, int val) {
12+
if (nums.empty()) return 0;
13+
int res = -1;
14+
for (int i = 0; i < nums.size(); i++) {
15+
if (nums[i] != val) {
16+
nums[++res] = nums[i];
17+
}
18+
}
19+
return res + 1;
20+
}
21+
};
22+
23+
void test() {
24+
Solution s;
25+
vector<int> nums = {3, 2, 2, 3};
26+
vector<int> expected = {2, 2};
27+
assert(s.removeElement(nums, 3) == expected.size());
28+
assert(vector<int>(nums.begin(), nums.begin() + expected.size()) == expected);
29+
30+
nums = {0, 1, 2, 2, 3, 0, 4, 2};
31+
expected = {0, 1, 3, 0, 4};
32+
assert(s.removeElement(nums, 2) == expected.size());
33+
assert(vector<int>(nums.begin(), nums.begin() + expected.size()) == expected);
34+
35+
nums = {};
36+
expected = {};
37+
assert(s.removeElement(nums, 1) == expected.size());
38+
assert(vector<int>(nums.begin(), nums.begin() + expected.size()) == expected);
39+
}
40+
41+
int main() {
42+
test();
43+
return 0;
44+
}

‎src/28-strStr.cpp‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// Created by 1412 on 2025/10/17.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
7+
using namespace std;
8+
9+
class Solution {
10+
public:
11+
int strStr(string haystack, string needle) {
12+
const int n = haystack.size(), m = needle.size();
13+
for (int i = 0; i < n - m + 1; i++) {
14+
if (haystack.substr(i, m) == needle) return i;
15+
}
16+
return -1;
17+
}
18+
};
19+
20+
void test() {
21+
Solution s;
22+
assert(s.strStr("sadbutsad", "sad") == 0);
23+
assert(s.strStr("leetcode", "leeto") == -1);
24+
}
25+
26+
int main() {
27+
test();
28+
return 0;
29+
}

0 commit comments

Comments
 (0)