suffix_array

Function suffix_array 

Source
pub fn suffix_array(s: &[char]) -> Vec<usize>
Expand description

文字列 s の suffix array を O(|s|log|s|) で求めます。

返り値は s.len()n としたとき、長さ n のベクタ sa であり次の条件を満たすものです。

  • s[sa[i]..]sn 個ある suffix のうち辞書順で i 番目である

original: CP-Algorithms

§Examples

use suffix_array::suffix_array;
let s: Vec<char> = "mississippi".chars().collect();
let sa = suffix_array(&s);
assert_eq!(sa, vec![10, 7, 4, 1, 0, 9, 8, 6, 3, 5, 2]);
// i
// ippi
// issippi
// ississippi
// mississippi
// pi
// ppi
// sippi
// sissippi
// ssippi
// ssissippi