解题思路:
注意事项:
参考代码:
#include<bits/stdc++.h>
#include<string>
using namespace std;
int leftbound[100000];
int rightbound[100000];
int main(){
int sum = 0;
string str;
cin>>str;
int len = str.size();
int arrright[26] = {0};
int countright[26] = {0};
for(int j = len-1 ; j >= 0 ; j--){
int r = str[j]-'a';
countright[r]++;
if(countright[r] == 1){
rightbound[j] = len-j;
}else{
rightbound[j] = arrright[r] - j;
}
arrright[r] = j;
}
int arrleft[26] = {0};
int countleft[26] = {0};
for(int i = 0 ; i < len ; i++){
int l = str[i]-'a';
countleft[l]++;
if(countleft[l] == 1){
leftbound[i] = i + 1;
}else{
leftbound[i] = i - arrleft[l];
}
arrleft[l] = i;
sum = sum + leftbound[i] + rightbound[i] - 1 + (leftbound[i]-1)*(rightbound[i]-1);
}
cout<<sum<<endl;
return 0;
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:2080 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1233 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1294 |
1908题解浏览:633 |
图形输出 (C语言代码)浏览:937 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:713 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:553 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:614 |
母牛的故事 (C语言代码)浏览:451 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:354 |