首先定义了suffix string 或者说suffix arrary
如果有个数组是 int[] text = {10, 20, 30, 25}
那么 suffix[0] = {10, 20, 30, 25}
suffix[1] = {20, 30, 25}
suffix[2] = {30, 25}
suffix[3] = {25}
如果对这些数组进行lexical order 的排序,我们可以得到
suffix[0] < suffix[1] < suffix[3] < suffix[2]
问题是:
input: int[] text
output: int[] suffix_array_order
e.g.
input: int[] text = {10, 20, 30, 25}
output: int[] suffix_array_order = {0, 1, 3, 2}
Solution:
注意: Arrays.sort(T[], Comparator)只能用于排序对象数组,不能用于排序int, long之类的原始值数组!
public Integer[] suffixArrayOrder(int[] A) { int n = A.length; Integer[] order = new Integer[n]; for(int i=0; i<n; i++) { order[i] = i; } Arrays.sort(order, new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { int res = A[o1] - A[o2]; while(res == 0 && o1 < n && o2 < n) { res = A[o1++] - A[o2++]; } return res; } }); System.out.println(Arrays.toString(order)); return order; }
第二题: input: int[] text, int[] subText
output: boolean isExist;
检查text数组中有没有一个subarray 是subText。要求时间小于O(N^2), N == text.length;
这里假设我们有了第一题的 suffix_array_order.
(做法是binary search)
这个没看懂,不知道怎么写。
原文见:
相关推荐
后缀数组(Suffix Array)是字符串处理中一种重要的数据结构,尤其在生物信息学和文本检索领域有着广泛应用。本文将详细讲解如何在MATLAB环境中实现后缀数组的计算。 后缀数组是一个数组,包含了给定字符串的所有...
在IT领域,Suffix Array是一种非常重要的数据结构,尤其在文本处理和生物信息学中有着广泛的应用。本项目“matlab开发-SuffixArray.zip”显然关注的是如何在MATLAB环境中实现Suffix Array。MATLAB是一种强大的编程...
SuffixArray是一种高效的数据结构,主要用于字符串的搜索和处理。它以一种有序的方式存储了一个字符串的所有后缀,使得在大量文本中进行模式匹配、查找、排序等操作变得非常快速。在这个扩展版本中,我们以单词为...
Algorithm-Ukkonen-s-Suffix-Tree-Algorithm.zip,ukkonen的后缀树算法,一个用python实现的完整版本,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
#Compressed-Suffix-Array(CSA) ##它是什么? CSA是一种简洁的数据结构(SDS),SDS可以隐式地表示一个对象,并且在接近对象信息论下界的空间中有效地支持对原始对象的操作。 CSA是SA(suffix-array)的隐式表达,...
后缀数组(Suffix Array)是一种在计算机科学领域中用于文本索引和字符串处理的数据结构,由Udi Manber和Gene Myers于1990年首次提出。它作为后缀树的一种空间节省替代方案,尤其在处理大型数据集时展现出优势。后缀...
项目的源代码托管在GitHub上,地址为:https://github.com/saaddan/Compressed-Enhanced-Suffix-Array。用户可以查看源代码,了解其实现细节,也可以下载并运行代码,进行测试和使用。 代码文件`codeBsB2012`可能是...
Prefix-Suffix Palindrome (Easy version) D2. Prefix-Suffix Palindrome (Hard version) 题意: 对于给出的字符串,可截取其前缀和后缀,求能组成的最长回文串。 思路: 正常来说暴力的思路是先匹配前缀pre和后缀...
在计算机科学领域,中缀表达式(Infix notation)是一种常用的数学表达式表示方式,其中运算符位于操作数之间,例如 `2 + 3 * 4`。然而,这种表达式在计算机处理时存在一定的复杂性,因为它需要依赖括号来确定运算的...
公共后缀一个存储库,为PyFunceble项目分发更新版本的public-suffix.json 。执照MIT LicenseCopyright (c) 2019, 2020, 2021 PyFuncebleCopyright (c) 2017, 2018, 2019, 2020, 2021 Nissar ChababyPermission is ...
### 两种高效的线性后缀数组构建算法 #### 摘要与背景 本文提出两种高效的线性后缀数组构建算法。这两种算法通过分治法和递归技术实现了线性的性能。它们与其他线性时间复杂度的后缀数组构建算法的不同之处在于...
### 后缀数组(Suffix Array) #### 一、概述 后缀数组是一种数据结构,用于存储字符串所有可能的后缀的排序列表。这种数组在文本处理、字符串匹配、生物信息学等领域有着广泛的应用。通过构建后缀数组,可以有效...
后缀阵列和 LCP 后缀数组和最长公共前缀注意:我们保证每条线的长度相等。 给定 k = 2, 3, ..., 10 的字符串 find,出现 k 次的最长字符串是什么? 注意:如果输入是aaaaa,出现两次的最长字符串是aaaa 例如,如果这...
Prefix-Suffix Palindrome (Easy version) D2. Prefix-Suffix Palindrome (Hard version) 题意: 对于给出的字符串,可截取其前缀和后缀,求能组成的最长回文串。 思路: 正常来说暴力的思路是先匹配前缀pre和后缀...
字符串匹配是计算机科学中一种重要的算法问题,广泛应用于文本处理、搜索引擎、编译器等领域。在给定的标题和描述中,提到了几种不同的字符串匹配方法:KMP算法、AC自动机与Trie树以及后缀数组。...
### 简单线性工作后缀数组构造 #### 概述 本文介绍了一种针对整数字母表的简单线性时间后缀数组构造算法——斜算法(Skew Algorithm)。后缀数组是一种重要的数据结构,它按字典序对字符串的所有后缀进行排序。...
turkish-suffix-library 使用 名词 from turkish_suffix_library.turkish import Turkish print(Turkish('araba').dative()) print(Turkish('sebep').ablative()) print(Turkish('sebep').accusative()) print...
eScholarship provides open access, scholarly publishing services to the University of California and delivers a dynamic research platform to scholars worldwide.Previously Published Works ...
其中,Run中输入astyle的命令参数:"D:\program files\AStyle\bin\AStyle.exe" --style=ansi-s4 -S -N -L -m0 -M40 --convert-tabs --suffix=.pre %f 同理,新建java格式化命令,Astyle参数为 C:\AStyle\bin\...