0和1交替出现的字符串为漂亮字串,?可以为1也可以为1,问所给字符串有多少个漂亮子串。
分析采用的是动态规划的方法解题,按照不同位的值划分集合
#includeusing namespace std; const int N = 2e5 + 10; typedef long long ll; int n, m, k, t; ll f[N][2]; void solve() { memset(f, 0, sizeof f); string s; ll ans = 0; cin >> s; s = " " + s; int len = s.size(); for(int i = 1; i < len; i ++) { if(s[i] == '0') f[i][0] = f[i - 1][1] + 1; else if(s[i] == '1') f[i][1] = f[i - 1][0] + 1; else { f[i][0] = f[i - 1][1] + 1; f[i][1] = f[i - 1][0] + 1; } ans += max(f[i][0], f[i][1]); } cout << ans << "n"; } int main() { cin >> t; while(t --) { solve(); } return 0; }



