解法一
维护两个数组统计两个子串中各个字母的数量,并维护字母种类。每次修改一位字符判断是否符合题目要求。
import java.util.HashSet;
import java.util.Set;
class Solution {
public int numSplits(String s) {
int ans = 0;
int[] count1 = new int[26];
int[] count2 = new int[26];
int size1 = 0, size2 = 0;
int i;
for (i = 0; i < s.length(); ++i) {
++count2[s.charAt(i) - 97];
}
for (i = 0; i < 26; ++i) {
if (count2[i] > 0) {
++size2;
}
}
int ch;
for (i = 0; i < s.length() - 1; ++i) {
ch = s.charAt(i) - 97;
++count1[ch];
if (count1[ch] == 1) {
++size1;
}
--count2[ch];
if (count2[ch] == 0) {
--size2;
}
if (size1 == size2) {
++ans;
}
}
return ans;
}
}