Longest Nice Substring LeetCode solution in C++

1
class Solution {
2
public:
3
string longestNiceSubstring(string s) {
4
int arr1[26] = {};
5
int arr2[26] = {};
6
if (s.length() < 2) return "";
7
for (char ch : s) {
8
if (ch >= 'A' && ch <= 'Z')
9
arr1[(ch | 32) - 'a']++;
10
else
11
arr2[ch - 'a']++;
12
}
13
vector<int> index;
14
index.push_back(-1);
15
for (int i = 0; i < s.length(); i++) {
16
if ((arr1[(s[i] | 32) - 'a'] >= 1 && arr2[(s[i] | 32) - 'a'] == 0) ||
17
(arr1[(s[i] | 32) - 'a'] == 0 && arr2[(s[i] | 32) - 'a'] >= 1))
18
index.push_back(i);
19
}
20
// index.push_back(2);
21
index.push_back(s.length());
22
if (index.size() == 2) return s;
23
string minn = "";
24
for (int i = 0; i < index.size() - 1; i++) {
25
string temp = longestNiceSubstring(s.substr(index[i] + 1, index[i + 1] - index[i] - 1));
26
minn = temp.length() > minn.length() ? temp : minn;
27
}
28
return minn;
29
}
30
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0