【发布时间】:2018-11-10 10:36:46
【问题描述】:
我有两个字符串,并想检查第二个是否是第一个的排列(当然反之亦然)。 所以我在 cplusplus 参考资料中发现 algorithm 库的 is_permutation 函数可以帮助我。确实,我有以下代码:
int main () {
string s1 = "bear";
string s2 = "reab";
if ( is_permutation (s1.begin(), s1.end(), s2.begin()) )
cout << "Found permutation.\n";
else cout << "No permutations found.\n";
return 0;
}
这很有效。但是现在,例如,假设我还有字符串“bear”,以及第二个 random 字符串,里面有一个熊的排列,所以是这样的:
s1 = "bear";
s2 = "AsdVYTcKIyqbNQreabJUoBn";
如您所见,仍然存在排列“reab”。我如何才能真正检查是否存在隐藏的排列?最终,将其保存在“s3”不同的字符串上?
希望你能帮助我。
【问题讨论】:
-
您可以检查所有四个(s1.length)字符连续子字符串,并在每个子字符串上使用 is_permutation。
标签: c++ string permutation