Skip to content

CPLib.String

Defined in cp-library@0.5.3

Values

namespace CPLib.String

calc_lcp_array

Type: Std::Array Std::I64 -> Std::String -> Std::Array Std::I64

文字列のLCP arrayを計算する

Returns

長さs.get_size - 1の配列lcpで、lcp.@(i)s[sa.@(i)..)s[sa.@(i+1)..)の最長共通接頭辞の長さを表す。

Parameters
  • sa : 対象の文字列のsuffix array
  • s : 対象の文字列

calc_lcp_array_any

Type: [a : Std::Eq] Std::Array Std::I64 -> Std::Array a -> Std::Array Std::I64

配列のLCP arrayを計算する

Returns

長さs.get_size - 1の配列lcpで、lcp.@(i)s[sa.@(i)..)s[sa.@(i+1)..)の最長共通接頭辞の長さを表す。

Parameters
  • sa : 対象の配列のsuffix array
  • s : 対象の配列

calc_suffix_array

Type: Std::String -> Std::Array Std::I64

文字列のsuffix arrayを計算する

注:現在はSA-ISではなくダブリングで実装されているため、計算量はO(n (log n)^2)です。

Returns

[0, 1, ..., s.get_size) の順列saで、任意のiについてs[sa.@(i)..) < s[sa.@(i+1)..) が成り立つもの

Parameters
  • s : 対象の文字列

calc_suffix_array_any

Type: [a : CPLib.String::EmbedToI64] Std::Array a -> Std::Array Std::I64

配列のsuffix arrayを計算する

注:現在はSA-ISではなくダブリングで実装されているため、計算量はO(n (log n)^2)です。

Returns

[0, 1, ..., s.get_size) の順列saで、任意のiについてs[sa.@(i)..) < s[sa.@(i+1)..) が成り立つもの

Parameters
  • s : 対象の配列

calc_z_array

Type: Std::String -> Std::Array Std::I64

文字列のZ-arrayを計算する

Returns

長さs.get_sizeの配列zで、z.@(i)s[i..)s.[0..)の最長共通接頭辞の長さを表す。

Parameters
  • s : 対象の文字列

calc_z_array_any

Type: [a : Std::Eq] Std::Array a -> Std::Array Std::I64

配列のZ-arrayを計算する

Returns

長さs.get_sizeの配列zで、z.@(i)s[i..)s.[0..)の最長共通接頭辞の長さを表す。

Parameters
  • s : 対象の配列

namespace CPLib.String::EmbedToI64

embed

Type: [a : CPLib.String::EmbedToI64] a -> Std::I64

Types and aliases

Traits and aliases

namespace CPLib.String

trait a : EmbedToI64

method embed

Type: a -> Std::I64

Trait implementations

impl Std::I16 : CPLib.String::EmbedToI64

impl Std::I32 : CPLib.String::EmbedToI64

impl Std::I64 : CPLib.String::EmbedToI64

impl Std::I8 : CPLib.String::EmbedToI64

impl Std::U16 : CPLib.String::EmbedToI64

impl Std::U32 : CPLib.String::EmbedToI64

impl Std::U8 : CPLib.String::EmbedToI64