@@ -234,8 +234,8 @@ pub fn suffix_array_arbitrary<T: Ord>(s: &[T]) -> Vec<usize> {
234
234
sa_is_i32 :: < DefaultThreshold > ( & s2, now)
235
235
}
236
236
237
- pub fn suffix_array ( s : impl IntoIterator < Item = char > ) -> Vec < usize > {
238
- let s2: Vec < usize > = s. into_iter ( ) . map ( |x| x as usize ) . collect ( ) ;
237
+ pub fn suffix_array ( s : & str ) -> Vec < usize > {
238
+ let s2: Vec < usize > = s. bytes ( ) . map ( |x| x as usize ) . collect ( ) ;
239
239
sa_is :: < DefaultThreshold > ( & s2, 255 )
240
240
}
241
241
@@ -334,7 +334,7 @@ mod tests {
334
334
let sa_is = sa_is_i32 :: < ZeroThreshold > ( & array, 255 ) ;
335
335
assert_eq ! ( sa_is, expected_array) ;
336
336
337
- let sa_str = suffix_array ( str. chars ( ) ) ;
337
+ let sa_str = suffix_array ( str) ;
338
338
assert_eq ! ( sa_str, expected_array) ;
339
339
}
340
340
@@ -360,15 +360,15 @@ mod tests {
360
360
#[ test]
361
361
fn test_lcp_0 ( ) {
362
362
let str = "abracadabra" ;
363
- let sa = suffix_array ( str. chars ( ) ) ;
363
+ let sa = suffix_array ( str) ;
364
364
let lcp = lcp_array ( str, & sa) ;
365
365
assert_eq ! ( lcp, & [ 1 , 4 , 1 , 1 , 0 , 3 , 0 , 0 , 0 , 2 ] ) ;
366
366
}
367
367
368
368
#[ test]
369
369
fn test_lcp_1 ( ) {
370
370
let str = "mmiissiissiippii" ; // an example taken from https://mametter.hatenablog.com/entry/20180130/p1
371
- let sa = suffix_array ( str. chars ( ) ) ;
371
+ let sa = suffix_array ( str) ;
372
372
let lcp = lcp_array ( str, & sa) ;
373
373
assert_eq ! ( lcp, & [ 1 , 2 , 2 , 6 , 1 , 1 , 5 , 0 , 1 , 0 , 1 , 0 , 3 , 1 , 4 ] ) ;
374
374
}
0 commit comments