试题 历届试题
一个字母能被几个子串包含,相当于该字母的作用值,即=上一个与该字母相同的到该字母*该字母到下一个与该字母相同的,累加即可。
如图:
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int res=0;
cin>>s;
int i=1,j;
for(;i<=s.length();i++){
int fr=i-0,ba=s.length()+1-i;
for(j=i-1;j>0;j--){//向前
if(s[i-1]==s[j-1]){
fr=i-j;
break;
}
}
for(j=i+1;j<=s.length();j++){//向后
if(s[i-1]==s[j-1]){
ba=j-i;
break;
}
}
int n=fr*ba;
res+=n;
//printf("%d %d %d\n",fr,ba,n);
}
printf("%d",res);
return 0;
}