Skip to content

Commit 2e489f9

Browse files
authored
Suf ary nits (#71)
* golf * another nit * another nit --------- Co-authored-by: Luke Videckis <lukevideckis@gmail.com>
1 parent 4d2b958 commit 2e489f9

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/strings/suf_ary.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ impl SufAry {
131131
if self.len_lcp(x.start, y.start) >= std::cmp::min(x.len(), y.len()) {
132132
x.len().cmp(&y.len())
133133
} else {
134-
self.sa_inv[x.start].cmp(&self.sa_inv[y.start])
134+
self.cmp_sufs(x.start, y.start)
135135
}
136136
}
137137

@@ -144,9 +144,8 @@ impl SufAry {
144144
/// - Space: O(1)
145145
pub fn find_str(&self, t: &[usize]) -> Range<usize> {
146146
let le = self.sa.partition_point(|&i| &self.s[i..] < t);
147-
let ri = self.sa[le..]
148-
.partition_point(|&i| &self.s[i..std::cmp::min(i + t.len(), self.n)] == t)
149-
+ le;
147+
let ri =
148+
self.sa[le..].partition_point(|&i| &self.s[i..(i + t.len()).min(self.n)] == t) + le;
150149
le..ri
151150
}
152151

@@ -161,10 +160,9 @@ impl SufAry {
161160
let cmp = |i: usize, flip: bool| -> bool {
162161
flip ^ (self.len_lcp(i, substr.start) < substr.len())
163162
};
164-
let le = self.sa[..self.sa_inv[substr.start]].partition_point(|&i| cmp(i, false));
165-
let ri = self.sa[self.sa_inv[substr.start] + 1..].partition_point(|&i| cmp(i, true))
166-
+ self.sa_inv[substr.start]
167-
+ 1;
163+
let idx = self.sa_inv[substr.start];
164+
let le = self.sa[..idx].partition_point(|&i| cmp(i, false));
165+
let ri = self.sa[idx + 1..].partition_point(|&i| cmp(i, true)) + idx + 1;
168166
le..ri
169167
}
170168
}

0 commit comments

Comments
 (0)