【发布时间】:2016-06-07 02:50:51
【问题描述】:
我一直在研究一些编程问题,试图用数据结构和算法来刷新我的记忆。问题是检查一个字符串是否是另一个字符串的排列。
我见过的很多代码解决方案都会对每个字符串进行排序,然后检查排序后的字符串是否彼此相等。这通常通过执行以下操作来完成:
sort(strOne.begin(), strOne.end());
sort(strTwo.begin(), strTwo.end());
for (int i = 0; i < strOne.length(); i++)
{
if (strOne[i] != strTwo[i])
{
return false;
}
}
但是,我想知道在对字符串进行排序后,您是否可以直接比较字符串而不是使用 for 循环。例如,
if (strOne == strTwo) {
return true;
}
我是否遗漏了第二个选项不起作用的东西?我觉得我错过了一个基本概念,因为似乎大多数解决方案都有 for 循环来迭代字符串。
提前致谢!
【问题讨论】:
-
std::is_permutation。就用它吧。或者如果你想知道它是如何工作的,你可以阅读它的代码。 -
link 示例......