解法一
维护两个数组统计两个子串中各个字母的数量,并维护字母种类。每次修改一位字符判断是否符合题目要求。
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;}}
