算相对距离,下标从0开始可能会错,记得偏移(+1)
此题是算每个字符在自己所能影响到子串的数量(即贡献值)
以后算字符串中的相对距离,且下标从0开始,都要进行+1偏移
(可以不看这句)若不进行+1偏移的话,pos[i]==0时,则有可能i的上一个位置是0号,也有可能i到目前为止是第一次出现
#include<bits/stdc++.h> using namespace std; #define ll long long string str; ll ans; int pos[37]; int main(){ cin >> str; int len=str.size(); for(int i=0;i<len;++i){ ans+=(ll)(len-i)*( i+1-pos[str[i]-'a'] ); pos[str[i]-'a']=i+1; } cout << ans; return 0; }