描述
当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串。比方说,“abABB” 是美好字符串,因为 ‘A’ 和 ‘a’ 同时出现了,且 ‘B’ 和 ‘b’ 也同时出现了。然而,“abA” 不是美好字符串因为 ‘b’ 出现了,而 ‘B’ 没有出现。
给你一个字符串 s ,请你返回 s 最长的 美好子字符串 。如果有多个答案,请你返回 最早 出现的一个。如果不存在美好子字符串,请你返回一个空字符串。
分析
思路一:分治思想
选择不满足美好字符串条件的字符作为分割点,分割字符串,直到找到美好字符串。
借助位运算判断一个字符串是否是美好字符串。
思路二:遍历所有的子字符串,判断每个字符串是否是美好字符串(借助移位运算)
class Solution {
public String longestNiceSubstring(String s) {
int up = 0, low = 0;
Set<Character> set = new HashSet<