正在运行的流中的字符串字符串

时间:2016-02-23 04:15:39

标签: string algorithm data-structures

你有一连串的字符串。在任何时候,你都必须打印字符串,以便将彼此排列的字符串打印在一起。

例如:

输入:{'act','cat',dog','tac','abc','god','bac'}

输出:{'act','cat','tac',dog','god','abc','bac'}

可以添加更多字词。

可以使用哪种算法或数据结构?

1 个答案:

答案 0 :(得分:2)

如果您喜欢C ++,那么只需将它们存储起来:

unordered_map<string, vector<string> > anagrams;
void insert(const string& str) {
    string copy = str;
    sort(str.begin(), str.end());
    anagrams[str].push_back(copy);
}

anagrams通过按字典顺序排列的最小字符串形成等价类,该字符串可以从所有字符的排列中获得。您还可以提出一系列其他等价类公式。

我想打印应该很明显。