@@ -131,7 +131,7 @@ impl SufAry {
131131 if self . len_lcp ( x. start , y. start ) >= std:: cmp:: min ( x. len ( ) , y. len ( ) ) {
132132 x. len ( ) . cmp ( & y. len ( ) )
133133 } else {
134- self . sa_inv [ x. start ] . cmp ( & self . sa_inv [ y. start ] )
134+ self . cmp_sufs ( x. start , y. start )
135135 }
136136 }
137137
@@ -144,9 +144,8 @@ impl SufAry {
144144 /// - Space: O(1)
145145 pub fn find_str ( & self , t : & [ usize ] ) -> Range < usize > {
146146 let le = self . sa . partition_point ( |& i| & self . s [ i..] < t) ;
147- let ri = self . sa [ le..]
148- . partition_point ( |& i| & self . s [ i..std:: cmp:: min ( i + t. len ( ) , self . n ) ] == t)
149- + le;
147+ let ri =
148+ self . sa [ le..] . partition_point ( |& i| & self . s [ i..( i + t. len ( ) ) . min ( self . n ) ] == t) + le;
150149 le..ri
151150 }
152151
@@ -161,10 +160,9 @@ impl SufAry {
161160 let cmp = |i : usize , flip : bool | -> bool {
162161 flip ^ ( self . len_lcp ( i, substr. start ) < substr. len ( ) )
163162 } ;
164- let le = self . sa [ ..self . sa_inv [ substr. start ] ] . partition_point ( |& i| cmp ( i, false ) ) ;
165- let ri = self . sa [ self . sa_inv [ substr. start ] + 1 ..] . partition_point ( |& i| cmp ( i, true ) )
166- + self . sa_inv [ substr. start ]
167- + 1 ;
163+ let idx = self . sa_inv [ substr. start ] ;
164+ let le = self . sa [ ..idx] . partition_point ( |& i| cmp ( i, false ) ) ;
165+ let ri = self . sa [ idx + 1 ..] . partition_point ( |& i| cmp ( i, true ) ) + idx + 1 ;
168166 le..ri
169167 }
170168}
0 commit comments