| 12345678910111213141516171819202122 |
- #include "try_split_sequence.h"
- #include <vector>
- std::optional<std::pair<std::string_view, std::string_view>>
- TrySplitSequence(const std::string_view &sequence) {
- std::vector<size_t> a_keys;
- for (size_t i = 0; i < sequence.size(); ++i) {
- if (sequence[i] == 'A') {
- a_keys.push_back(i);
- }
- }
- if (a_keys.size() < 2) {
- return std::nullopt;
- }
- size_t midpoint = a_keys.size() / 2 - 1;
- return std::make_pair(std::string_view(&(sequence[0]), a_keys[midpoint]+1),
- std::string_view(&(sequence[a_keys[midpoint]+1]),
- sequence.size() - a_keys[midpoint]-1));
- }
|