classSolution { public: intnumSplits(string s){ int ans = 0;
vector<int> l_dic(26, 0); vector<int> r_dic(26, 0); int left = 0; int right = 0;
for (int i = 0; i < s.size(); i++) { int c = s[i] - 'a'; right += (r_dic[c] == 0); r_dic[c]++; }
for (int i = 0; i < s.size() - 1; i++) { int c = s[i] - 'a'; left += (l_dic[c] == 0); l_dic[c]++; r_dic[c]--; right -= (r_dic[c] == 0); ans += (left == right); }
for (int i = 0; i < target.size(); i++) { while (st.top() > target[i]) { int t = st.top(); st.pop(); ans += t - max(st.top(), target[i]); } if (st.top() == target[i]) continue;