1. 题目
2. 思路
(1) 二进制法
- 分别利用两个int类型的低26位统计大小写字母的出现情况,若两个整数相等,则表示该子串是美好子串。
- 利用双层循环检查所有子串即可。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public String longestNiceSubstring(String s) {
int n = s.length();
int index = -1;
int len = 0;
for (int i = 0; i < n; i++) {
int lower = 0;
int upper = 0;
for (int j = i; j < n; j++) {
char ch = s.charAt(j);
if (Character.isLowerCase(ch)) {
lower |= (1 << (ch - 'a'));
} else {
upper |= (1 << (ch - 'A'));
}
if (lower == upper && j - i + 1 > len) {
index = i;
len = j - i + 1;
}
}
}
return index == -1 ? "" : s.substring(index, index + len);
}
}
|