Skip to content

Commit a2ca249

Browse files
authored
test with vector instead of string because s[s.size()] is **not** UB (#152)
* test with vector instead of string because s[s.size()] is **not** UB * fix compile error
1 parent 3b950cb commit a2ca249

15 files changed

+36
-32
lines changed

library/strings/wildcard_pattern_matching.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
//! s_vec[i]=0 or t_vec[i]=0 for a wildcard
1010
//! @time O((n+m) log (n+m))
1111
//! @space O(n+m)
12+
using vl = vector<ll>;
1213
vector<vl> make_powers(const vl& v) {
1314
int n = sz(v);
1415
vector<vl> pws(3, vl(n));

tests/library_checker_aizu_tests/strings/kmp.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ int main() {
66
cin.tie(0)->sync_with_stdio(0);
77
string haystack, needle;
88
cin >> haystack >> needle;
9-
KMP kmp(needle);
10-
vector<bool> is_m = kmp.find_str(haystack);
9+
KMP kmp(vi(all(needle)));
10+
vector<bool> is_m = kmp.find_str(vi(all(haystack)));
1111
for (int i = 0; i < sz(is_m); i++)
1212
if (is_m[i]) cout << i << '\n';
1313
return 0;

tests/library_checker_aizu_tests/strings/lcp_array.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ int main() {
1919
string s;
2020
cin >> s;
2121
int n = sz(s);
22-
auto [sa, sa_inv, lcp] = get_sa(s, 256);
23-
auto [sa1, sa_inv1, lcp1] = sa_short(s);
22+
auto [sa, sa_inv, lcp] = get_sa(vi(all(s)), 256);
23+
auto [sa1, sa_inv1, lcp1] = sa_short(vi(all(s)));
2424
assert(sa == sa1);
2525
assert(sa_inv == sa_inv1);
2626
assert(lcp == lcp1);

tests/library_checker_aizu_tests/strings/lcp_query_palindrome.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ int main() {
88
cin >> s;
99
int n = sz(s);
1010
s = s + '$' + string(rbegin(s), rend(s));
11-
auto [sa, sa_inv, lcp] = get_sa(s, 256);
12-
sa_query lq(s, sa, sa_inv, lcp);
11+
auto [sa, sa_inv, lcp] = get_sa(vi(all(s)), 256);
12+
sa_query lq(vi(all(s)), sa, sa_inv, lcp);
1313
for (int i = 0; i < n; i++)
1414
for (int j = i; j < min(i + 2, n); j++)
1515
cout << lq.len_lcp(j, (n - i - 1) + n + 1) * 2 -

tests/library_checker_aizu_tests/strings/lcp_query_zfunc.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ int main() {
77
cin.tie(0)->sync_with_stdio(0);
88
string s;
99
cin >> s;
10-
auto [sa, sa_inv, lcp] = get_sa(s, 256);
11-
sa_query lq(s, sa, sa_inv, lcp);
10+
auto [sa, sa_inv, lcp] = get_sa(vi(all(s)), 256);
11+
sa_query lq(vi(all(s)), sa, sa_inv, lcp);
1212
// test `*_cmp` functions
1313
{
1414
for (int num_tests = 50; num_tests--;) {

tests/library_checker_aizu_tests/strings/lcs_dp.test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ int main() {
1111
cin >> s >> t;
1212
array<int, 2> res;
1313
for (int j = 0; j < 2; j++) {
14-
lcs_dp lcs(t);
14+
lcs_dp lcs(vi(all(t)));
1515
for (char c : s) lcs.push_onto_s(c);
1616
res[j] = int(count(begin(lcs.dp), end(lcs.dp), -1));
1717
swap(s, t);

tests/library_checker_aizu_tests/strings/lcs_queries.test.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ int main() {
1313
cin >> a >> b >> c;
1414
queries[i] = {a, b, c};
1515
}
16-
vector<int> res = lcs_queries(s, t, queries);
16+
vector<int> res =
17+
lcs_queries(vi(all(s)), vi(all(t)), queries);
1718
for (int val : res) cout << val << '\n';
1819
return 0;
1920
}

tests/library_checker_aizu_tests/strings/lcs_queries_merge_sort_tree.test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ int main() {
1010
cin >> q >> s >> t;
1111
vector<merge_sort_tree> msts;
1212
{
13-
lcs_dp lcs(t);
13+
lcs_dp lcs(vi(all(t)));
1414
msts.emplace_back(lcs.dp);
1515
for (char c : s) {
1616
lcs.push_onto_s(c);

tests/library_checker_aizu_tests/strings/manacher.test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ int main() {
88
string s;
99
cin >> s;
1010
int n = sz(s);
11-
pal_query pq(s);
11+
pal_query pq(vi(all(s)));
1212
vector<int> longest(longest_from_index(pq));
1313
{
1414
vector<pair<int, int>> tests;

tests/library_checker_aizu_tests/strings/multi_matching_bs.test.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ int main() {
99
cin.tie(0)->sync_with_stdio(0);
1010
string s;
1111
cin >> s;
12-
auto [sa, sa_inv, lcp] = get_sa(s, 256);
13-
sa_query sf_a(s, sa, sa_inv, lcp);
12+
auto [sa, sa_inv, lcp] = get_sa(vi(all(s)), 256);
13+
sa_query sf_a(vi(all(s)), sa, sa_inv, lcp);
1414
{
1515
auto [sa_le, sa_ri, s_l, s_r] =
16-
sf_a.find_str_fast(string(""));
17-
pair<int, int> short_res = sf_a.find_str(string(""));
16+
sf_a.find_str_fast(vi());
17+
pair<int, int> short_res = sf_a.find_str(vi());
1818
assert(sa_le == short_res.first &&
1919
sa_ri == short_res.second);
2020
assert(sa_le == 0 && sa_ri == sz(s));
@@ -25,8 +25,9 @@ int main() {
2525
while (q--) {
2626
string t;
2727
cin >> t;
28-
auto [sa_le, sa_ri, s_l, s_r] = sf_a.find_str_fast(t);
29-
pair<int, int> short_res = sf_a.find_str(t);
28+
auto [sa_le, sa_ri, s_l, s_r] =
29+
sf_a.find_str_fast(vi(all(t)));
30+
pair<int, int> short_res = sf_a.find_str(vi(all(t)));
3031
assert(sa_le == short_res.first &&
3132
sa_ri == short_res.second);
3233
int str_len = s_r - s_l;

0 commit comments

Comments
 (0)