-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path13_jan
45 lines (35 loc) · 1.14 KB
/
13_jan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/\*
You are given a string s.
You can perform the following process on s any number of times:
Choose an index i in the string such that there is at least one character to the left of index i that is equal to s[i], and at least one character to the right that is also equal to s[i].
Delete the closest character to the left of index i that is equal to s[i].
Delete the closest character to the right of index i that is equal to s[i].
Return the minimum length of the final string s that you can achieve.
Example 1:
Input: s = "abaacbcbb"
Output: 5
Explanation:
We do the following operations:
Choose index 2, then remove the characters at indices 0 and 3. The resulting string is s = "bacbcbb".
Choose index 3, then remove the characters at indices 0 and 5. The resulting string is s = "acbcb".
\*/
//approch
class Solution {
public:
int minimumLength(string s) {
vector<int> charFrequency(26, 0);
int totalLength = 0;
for (char currentChar : s) {
charFrequency[currentChar - 'a']++;
}
for (int frequency : charFrequency) {
if (frequency == 0) continue;
if (frequency % 2 == 0) {
totalLength += 2;
} else {
totalLength += 1;
}
}
return totalLength;
}
};