Skip to content

Commit fb3255b

Browse files
committed
feat: add solutions to lc problem: No.1763
No.1763.Longest Nice Substring
1 parent 2b0ac4d commit fb3255b

File tree

6 files changed

+229
-2
lines changed

6 files changed

+229
-2
lines changed

solution/1700-1799/1763.Longest Nice Substring/README.md

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,94 @@
6363
<!-- 这里可写当前语言的特殊实现逻辑 -->
6464

6565
```python
66-
66+
class Solution:
67+
def longestNiceSubstring(self, s: str) -> str:
68+
n = len(s)
69+
ans = ''
70+
for i in range(n):
71+
lower = upper = 0
72+
for j in range(i, n):
73+
if s[j].islower():
74+
lower |= 1 << (ord(s[j]) - ord('a'))
75+
else:
76+
upper |= 1 << (ord(s[j]) - ord('A'))
77+
if lower == upper and j - i + 1 > len(ans):
78+
ans = s[i: j + 1]
79+
return ans
6780
```
6881

6982
### **Java**
7083

7184
<!-- 这里可写当前语言的特殊实现逻辑 -->
7285

7386
```java
87+
class Solution {
88+
89+
public String longestNiceSubstring(String s) {
90+
int n = s.length();
91+
String ans = "";
92+
for (int i = 0; i < n; ++i) {
93+
int lower = 0, upper = 0;
94+
for (int j = i; j < n; ++j) {
95+
char c = s.charAt(j);
96+
if (Character.isLowerCase(c)) {
97+
lower |= 1 << (c - 'a');
98+
} else {
99+
upper |= 1 << (c - 'A');
100+
}
101+
if (lower == upper && j - i + 1 > ans.length()) {
102+
ans = s.substring(i, j + 1);
103+
}
104+
}
105+
}
106+
return ans;
107+
}
108+
}
109+
110+
```
111+
112+
### **C++**
113+
114+
```cpp
115+
class Solution {
116+
public:
117+
string longestNiceSubstring(string s) {
118+
int n = s.size();
119+
string ans = "";
120+
for (int i = 0; i < n; ++i)
121+
{
122+
int lower = 0, upper = 0;
123+
for (int j = i; j < n; ++j)
124+
{
125+
if (islower(s[j])) lower |= 1 << (s[j] - 'a');
126+
else upper |= 1 << (s[j] - 'A');
127+
if (lower == upper && j - i + 1 > ans.size()) ans = s.substr(i, j - i + 1);
128+
}
129+
}
130+
return ans;
131+
}
132+
};
133+
```
74134
135+
### **Go**
136+
137+
```go
138+
func longestNiceSubstring(s string) (ans string) {
139+
for i := range s {
140+
lower, upper := 0, 0
141+
for j := i; j < len(s); j++ {
142+
if unicode.IsLower(rune(s[j])) {
143+
lower |= 1 << (s[j] - 'a')
144+
} else {
145+
upper |= 1 << (s[j] - 'A')
146+
}
147+
if lower == upper && j-i+1 > len(ans) {
148+
ans = s[i : j+1]
149+
}
150+
}
151+
}
152+
return
153+
}
75154
```
76155

77156
### **...**

solution/1700-1799/1763.Longest Nice Substring/README_EN.md

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,92 @@ As there are multiple longest nice substrings, return &quot;dD&quot; since it oc
5555
### **Python3**
5656

5757
```python
58-
58+
class Solution:
59+
def longestNiceSubstring(self, s: str) -> str:
60+
n = len(s)
61+
ans = ''
62+
for i in range(n):
63+
lower = upper = 0
64+
for j in range(i, n):
65+
if s[j].islower():
66+
lower |= 1 << (ord(s[j]) - ord('a'))
67+
else:
68+
upper |= 1 << (ord(s[j]) - ord('A'))
69+
if lower == upper and j - i + 1 > len(ans):
70+
ans = s[i: j + 1]
71+
return ans
5972
```
6073

6174
### **Java**
6275

6376
```java
77+
class Solution {
78+
79+
public String longestNiceSubstring(String s) {
80+
int n = s.length();
81+
String ans = "";
82+
for (int i = 0; i < n; ++i) {
83+
int lower = 0, upper = 0;
84+
for (int j = i; j < n; ++j) {
85+
char c = s.charAt(j);
86+
if (Character.isLowerCase(c)) {
87+
lower |= 1 << (c - 'a');
88+
} else {
89+
upper |= 1 << (c - 'A');
90+
}
91+
if (lower == upper && j - i + 1 > ans.length()) {
92+
ans = s.substring(i, j + 1);
93+
}
94+
}
95+
}
96+
return ans;
97+
}
98+
}
99+
100+
```
101+
102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
string longestNiceSubstring(string s) {
108+
int n = s.size();
109+
string ans = "";
110+
for (int i = 0; i < n; ++i)
111+
{
112+
int lower = 0, upper = 0;
113+
for (int j = i; j < n; ++j)
114+
{
115+
if (islower(s[j])) lower |= 1 << (s[j] - 'a');
116+
else upper |= 1 << (s[j] - 'A');
117+
if (lower == upper && j - i + 1 > ans.size()) ans = s.substr(i, j - i + 1);
118+
}
119+
}
120+
return ans;
121+
}
122+
};
123+
```
64124
125+
### **Go**
126+
127+
```go
128+
func longestNiceSubstring(s string) (ans string) {
129+
for i := range s {
130+
lower, upper := 0, 0
131+
for j := i; j < len(s); j++ {
132+
if unicode.IsLower(rune(s[j])) {
133+
lower |= 1 << (s[j] - 'a')
134+
} else {
135+
upper |= 1 << (s[j] - 'A')
136+
}
137+
if lower == upper && j-i+1 > len(ans) {
138+
ans = s[i : j+1]
139+
}
140+
}
141+
}
142+
return
143+
}
65144
```
66145

67146
### **...**
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
string longestNiceSubstring(string s) {
4+
int n = s.size();
5+
string ans = "";
6+
for (int i = 0; i < n; ++i)
7+
{
8+
int lower = 0, upper = 0;
9+
for (int j = i; j < n; ++j)
10+
{
11+
if (islower(s[j])) lower |= 1 << (s[j] - 'a');
12+
else upper |= 1 << (s[j] - 'A');
13+
if (lower == upper && j - i + 1 > ans.size()) ans = s.substr(i, j - i + 1);
14+
}
15+
}
16+
return ans;
17+
}
18+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func longestNiceSubstring(s string) (ans string) {
2+
for i := range s {
3+
lower, upper := 0, 0
4+
for j := i; j < len(s); j++ {
5+
if unicode.IsLower(rune(s[j])) {
6+
lower |= 1 << (s[j] - 'a')
7+
} else {
8+
upper |= 1 << (s[j] - 'A')
9+
}
10+
if lower == upper && j-i+1 > len(ans) {
11+
ans = s[i : j+1]
12+
}
13+
}
14+
}
15+
return
16+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public String longestNiceSubstring(String s) {
3+
int n = s.length();
4+
String ans = "";
5+
for (int i = 0; i < n; ++i) {
6+
int lower = 0, upper = 0;
7+
for (int j = i; j < n; ++j) {
8+
char c = s.charAt(j);
9+
if (Character.isLowerCase(c)) {
10+
lower |= 1 << (c - 'a');
11+
} else {
12+
upper |= 1 << (c - 'A');
13+
}
14+
if (lower == upper && j - i + 1 > ans.length()) {
15+
ans = s.substring(i, j + 1);
16+
}
17+
}
18+
}
19+
return ans;
20+
}
21+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def longestNiceSubstring(self, s: str) -> str:
3+
n = len(s)
4+
ans = ''
5+
for i in range(n):
6+
lower = upper = 0
7+
for j in range(i, n):
8+
if s[j].islower():
9+
lower |= 1 << (ord(s[j]) - ord('a'))
10+
else:
11+
upper |= 1 << (ord(s[j]) - ord('A'))
12+
if lower == upper and j - i + 1 > len(ans):
13+
ans = s[i: j + 1]
14+
return ans

0 commit comments

Comments
 (0)