Я работал над некоторыми вопросами программирования, чтобы попытаться обновить мою память структурами данных и алгоритмами. Проблема заключается в проверке, является ли одна строка перестановкой другой.Проверка того, что одна строка является перестановкой другой в C++
Множество программных решений, которые я видел, сортирует каждую строку, а затем проверяет, соответствуют ли отсортированные строки друг другу. Обычно это делается путем делать что-то вроде этого:
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;
}
}
Однако, мне интересно, если после сортировки строк вы могли бы просто сравнить строки непосредственно вместо того, чтобы использовать для цикла. Например,
if (strOne == strTwo) {
return true;
}
Есть ли что-то, что у меня отсутствует, в котором второй вариант не работает? Я чувствую, что у меня отсутствует базовая концепция, потому что кажется, что большинство решений имеют цикл for для итерации строки.
Заранее благодарен!
'std :: is_permutation'. Просто используйте его. Или вы можете прочитать его код, если хотите знать, как он работает. –
[ссылка] (http://en.cppreference.com/w/cpp/algorithm/is_permutation) с примером .... –
http://stackoverflow.com/questions/36818877/determine-if-a-is- permutation-of-b-using-ascii-values – lllllllllll