File tree 1 file changed +28
-0
lines changed
1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int [] sameEndSubstringCount (String s , int [][] queries ) {
3
+ int n = s .length ();
4
+ int [][] prefixSum = new int [26 ][n ];
5
+ for (int i = 0 ; i < n ; i ++) {
6
+ prefixSum [s .charAt (i ) - 'a' ][i ]++;
7
+ }
8
+ for (int i = 0 ; i < 26 ; i ++) {
9
+ for (int j = 1 ; j < n ; j ++) {
10
+ prefixSum [i ][j ] += prefixSum [i ][j - 1 ];
11
+ }
12
+ }
13
+ int [] result = new int [queries .length ];
14
+ for (int i = 0 ; i < queries .length ; i ++) {
15
+ int left = queries [i ][0 ];
16
+ int right = queries [i ][1 ];
17
+ int count = 0 ;
18
+ for (int c = 0 ; c < 26 ; c ++) {
19
+ int leftFreq = left == 0 ? 0 : prefixSum [c ][left - 1 ];
20
+ int rightFreq = prefixSum [c ][right ];
21
+ int freqInRange = rightFreq - leftFreq ;
22
+ count += (freqInRange * (freqInRange + 1 )) / 2 ;
23
+ }
24
+ result [i ] = count ;
25
+ }
26
+ return result ;
27
+ }
28
+ }
You can’t perform that action at this time.
0 commit comments