一维数组记忆化查询各子序列O(n2)
#include <iostream>
#include <cstring>
using namespace std;
int flag[26];
int num;
int main()
{
string str;
cin >> str;
long long sum = 0;
for(int i = 0; i < str.length(); ++i){
for(int j = i; j < str.length(); ++j){
flag[str[j] - 'a']++;
if(flag[str[j] - 'a'] == 1){
num++;
}
sum += num;
}
memset(flag, 0, sizeof(flag));
num = 0;
}
cout << sum << '\n';
return 0;
}