1- import java .util .Arrays ;
2- import java .util .Comparator ;
3- import java .util .function .Consumer ;
4-
51class StringAlgorithm {
62 private static int [] saNaive (int [] s ) {
73 int n = s .length ;
84 Integer [] _sa = new Integer [n ];
95 for (int i = 0 ; i < n ; i ++) {
106 _sa [i ] = i ;
117 }
12- Arrays .sort (_sa , (l , r ) -> {
8+ java . util . Arrays .sort (_sa , (l , r ) -> {
139 while (l < n && r < n ) {
1410 if (s [l ] != s [r ]) return s [l ] - s [r ];
1511 l ++;
@@ -36,13 +32,13 @@ private static int[] saDoubling(int[] s) {
3632 for (int k = 1 ; k < n ; k *= 2 ) {
3733 final int _k = k ;
3834 final int [] _rnk = rnk ;
39- Comparator <Integer > cmp = (x , y ) -> {
35+ java . util . Comparator <Integer > cmp = (x , y ) -> {
4036 if (_rnk [x ] != _rnk [y ]) return _rnk [x ] - _rnk [y ];
4137 int rx = x + _k < n ? _rnk [x + _k ] : -1 ;
4238 int ry = y + _k < n ? _rnk [y + _k ] : -1 ;
4339 return rx - ry ;
4440 };
45- Arrays .sort (_sa , cmp );
41+ java . util . Arrays .sort (_sa , cmp );
4642 tmp [_sa [0 ]] = 0 ;
4743 for (int i = 1 ; i < n ; i ++) {
4844 tmp [_sa [i ]] = tmp [_sa [i - 1 ]] + (cmp .compare (_sa [i - 1 ], _sa [i ]) < 0 ? 1 : 0 );
@@ -102,8 +98,8 @@ private static int[] sais(int[] s, int upper) {
10298 if (i < upper ) sumL [i + 1 ] += sumS [i ];
10399 }
104100
105- Consumer <int []> induce = lms -> {
106- Arrays .fill (sa , -1 );
101+ java . util . function . Consumer <int []> induce = lms -> {
102+ java . util . Arrays .fill (sa , -1 );
107103 int [] buf = new int [upper + 1 ];
108104 System .arraycopy (sumS , 0 , buf , 0 , upper + 1 );
109105 for (int d : lms ) {
@@ -128,7 +124,7 @@ private static int[] sais(int[] s, int upper) {
128124 };
129125
130126 int [] lmsMap = new int [n + 1 ];
131- Arrays .fill (lmsMap , -1 );
127+ java . util . Arrays .fill (lmsMap , -1 );
132128 int m = 0 ;
133129 for (int i = 1 ; i < n ; i ++) {
134130 if (!ls [i - 1 ] && ls [i ]) {
@@ -205,7 +201,7 @@ public static int[] suffixArray(int[] s) {
205201 for (int i = 0 ; i < n ; i ++) {
206202 idx [i ] = i ;
207203 }
208- Arrays .sort (idx , (l , r ) -> s [l ] - s [r ]);
204+ java . util . Arrays .sort (idx , (l , r ) -> s [l ] - s [r ]);
209205 int [] s2 = new int [n ];
210206 int now = 0 ;
211207 for (int i = 0 ; i < n ; i ++) {
0 commit comments