Method: Containers::SuffixArray#initialize

Defined in:
lib/containers/suffix_array.rb

#initialize(string) ⇒ SuffixArray

Creates a new SuffixArray with a given string. Object of any class implementing a #to_s method can be passed in, such as integers.

Complexity: O(n^2 log n)

s_array = Containers::SuffixArray("abracadabra")
s_array["abra"] #=> true

number = Containers::SuffixArray(1234567)
number[1] #=> true
number[13] #=> false

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/containers/suffix_array.rb', line 21

def initialize(string)
  string = string.to_s
  raise ArgumentError, "SuffixArray needs to be initialized with a non-empty string" if string.empty?
  @original_string = string
  @suffixes = []
  string.length.times do |i|
    @suffixes << string[i..-1]
  end

  # Sort the suffixes in ascending order
  @suffixes.sort! { |x, y| x <=> y }
end