【发布时间】:2016-04-16 07:56:25
【问题描述】:
所以我试图找到距离我正在迭代的每个字符 X 距离内的字符。举个例子....
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++ 的子字符串,我无法指定我想要索引 0 到 4 的所有字符。相反,它的索引为 0,然后包含 4 范围内的任何内容。这是有问题的当我想向后包含字符 4 个字母在前面 和 在后面。
到目前为止,我的代码将是正确的,但在最后留下一个字符。所以它看起来像这样......
nearby(abcdefg, 2)
dictionary('c' -> set(a,b,c))
省略了 d。
【问题讨论】:
-
这个类的“字典”是什么?只是
std::map吗?如果是这样,请写下来。此外,您指的是std::min,但只是set。是std:set吗?如果不是,那是什么? -
我想你可以假设;它们是我制作的自定义类,但我认为这与问题本身无关。只知道他们操作字典和集合的方式正常工作。他们工作正常;问题是字符串的拼接。