如题,90 分,TLE 两个点。
#include <bits/stdc++.h>
using namespace std;
inline int read(){
int res=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
return res*f;
}
int n,ans;
string s;
stack<char>stk;
map<stack<char>,int>mp;
int main(){
n=read(),cin>>s,s=' '+s;
mp[stk]++;
for (register int i=1;i<=n;i++){
if (stk.empty()) stk.push(s[i]);
else if (stk.top()==s[i]) stk.pop();
else stk.push(s[i]);
ans+=(mp[stk]++);
}
cout<<ans;
return 0;
}
qwq