Итак, я пытаюсь найти персонажей в пределах X расстояния до каждого персонажа, с которым я перебираю. Таким образом, для примера ....Используя substr, чтобы найти близлежащих персонажей
nearby("abcdefg", 2)
Если возвращать набор с каждым символом в качестве ключа и его значение закрытия на пределах расстояния 2. Он должен выглядеть так ...
dictionary('a' -> set(a, b, c), 'b' -> set(a, b, c, d), 'c' -> set(a,b,c,d,e))
Мой код прямо сейчас выглядит так ...
dictionary<char, set<char>> near(const std::string word, int dist) {
dictionary<char, set<char>> map;
for (int x = 0; x < word.size(); x++) {
for (char letter : word.substr(std::max(0, x - dist), std::min(dist + 1, int(word.size()))))
map[word[x]].insert(letter);
}
return map;
}
План выпуска: - Он работает по большей части, однако, из-за C++ 's су bstring Я не могу указать, что я хочу, чтобы все символы от индекса от 0 до 4. Вместо этого он индексируется в 0, а затем включает в себя что-либо в пределах диапазона 4. Это проблематично, когда я хочу вернуться назад, чтобы включить символы 4 буквы в передние и сзади.
На данный момент мой код будет правильным, но в конце оставить один символ. Таким образом, это выглядит так ...
nearby(abcdefg, 2)
dictionary('c' -> set(a,b,c))
Это не соответствует d.
Что это за классный словарь? Это просто 'std :: map'? Если да, напишите об этом. Кроме того, вы ссылаетесь на 'std :: min', но просто' set'. Это 'std: set'? Если нет, то что это? –
Я полагаю, вы могли бы предположить это; они являются обычными классами, которые я создал, но я думал, что это не относится к самой проблеме. Просто знайте, что они работают так, как работают словари и наборы. Они отлично работают; проблема заключается в сращивании строки. –