Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
'importを削除してFQCN指定にする'
  • Loading branch information
uwi
uwi committed Sep 9, 2020
commit 5cbf3b514275269063e965c1c307adde490b3ff0
18 changes: 7 additions & 11 deletions StringAlgorithm/StringAlgorithm.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
import java.util.Arrays;
import java.util.Comparator;
import java.util.function.Consumer;

class StringAlgorithm {
private static int[] saNaive(int[] s) {
int n = s.length;
Integer[] _sa = new Integer[n];
for (int i = 0; i < n; i++) {
_sa[i] = i;
}
Arrays.sort(_sa, (l, r) -> {
java.util.Arrays.sort(_sa, (l, r) -> {
while (l < n && r < n) {
if (s[l] != s[r]) return s[l] - s[r];
l++;
Expand All @@ -36,13 +32,13 @@ private static int[] saDoubling(int[] s) {
for (int k = 1; k < n; k *= 2) {
final int _k = k;
final int[] _rnk = rnk;
Comparator<Integer> cmp = (x, y) -> {
java.util.Comparator<Integer> cmp = (x, y) -> {
if (_rnk[x] != _rnk[y]) return _rnk[x] - _rnk[y];
int rx = x + _k < n ? _rnk[x + _k] : -1;
int ry = y + _k < n ? _rnk[y + _k] : -1;
return rx - ry;
};
Arrays.sort(_sa, cmp);
java.util.Arrays.sort(_sa, cmp);
tmp[_sa[0]] = 0;
for (int i = 1; i < n; i++) {
tmp[_sa[i]] = tmp[_sa[i - 1]] + (cmp.compare(_sa[i - 1], _sa[i]) < 0 ? 1 : 0);
Expand Down Expand Up @@ -102,8 +98,8 @@ private static int[] sais(int[] s, int upper) {
if (i < upper) sumL[i + 1] += sumS[i];
}

Consumer<int[]> induce = lms -> {
Arrays.fill(sa, -1);
java.util.function.Consumer<int[]> induce = lms -> {
java.util.Arrays.fill(sa, -1);
int[] buf = new int[upper + 1];
System.arraycopy(sumS, 0, buf, 0, upper + 1);
for (int d : lms) {
Expand All @@ -128,7 +124,7 @@ private static int[] sais(int[] s, int upper) {
};

int[] lmsMap = new int[n + 1];
Arrays.fill(lmsMap, -1);
java.util.Arrays.fill(lmsMap, -1);
int m = 0;
for (int i = 1; i < n; i++) {
if (!ls[i - 1] && ls[i]) {
Expand Down Expand Up @@ -205,7 +201,7 @@ public static int[] suffixArray(int[] s) {
for (int i = 0; i < n; i++) {
idx[i] = i;
}
Arrays.sort(idx, (l, r) -> s[l] - s[r]);
java.util.Arrays.sort(idx, (l, r) -> s[l] - s[r]);
int[] s2 = new int[n];
int now = 0;
for (int i = 0; i < n; i++) {
Expand Down