Зеркальная обратная программа на C++: изучение нескольких методов на примерах кода

В этой статье блога мы углубимся в концепцию зеркальной обратной программы и рассмотрим различные методы ее реализации на языке программирования C++. Зеркальное обратное число или строка получается путем изменения порядка его элементов.

Содержание:

  1. Метод 1: использование итерации
  2. Метод 2: использование рекурсии
  3. Метод 3: использование двух указателей
  4. Метод 4. Использование функцииverse()
  5. Метод 5. Использование структуры данных стека

Метод 1: использование итерации:

#include <iostream>
#include <string>
std::string mirrorInverseIterative(const std::string& input) {
    std::string result;
    for (int i = input.length() - 1; i >= 0; i--) {
        result += input[i];
    }
    return result;
}

Метод 2: использование рекурсии:

#include <iostream>
#include <string>
std::string mirrorInverseRecursive(const std::string& input) {
    if (input.length() <= 1)
        return input;
    return input[input.length() - 1] + mirrorInverseRecursive(input.substr(0, input.length() - 1));
}

Метод 3. Использование двух указателей:

#include <iostream>
#include <string>
#include <algorithm>
std::string mirrorInverseTwoPointers(const std::string& input) {
    std::string result = input;
    int left = 0;
    int right = input.length() - 1;
    while (left < right) {
        std::swap(result[left], result[right]);
        left++;
        right--;
    }
    return result;
}

Метод 4. Использование функцииverse():

#include <iostream>
#include <string>
#include <algorithm>
std::string mirrorInverseUsingReverse(const std::string& input) {
    std::string result = input;
    std::reverse(result.begin(), result.end());
    return result;
}

Метод 5. Использование структуры данных стека:

#include <iostream>
#include <stack>
#include <string>
std::string mirrorInverseUsingStack(const std::string& input) {
    std::stack<char> st;
    for (char c : input) {
        st.push(c);
    }
    std::string result;
    while (!st.empty()) {
        result += st.top();
        st.pop();
    }
    return result;
}

В этой статье мы рассмотрели несколько методов реализации зеркально-инверсной программы на C++. Мы рассмотрели итеративный, рекурсивный, двухуказательный, обратный() и подходы на основе стека. Каждый метод предоставляет свой способ достижения зеркальной инверсии заданного входного сигнала. В зависимости от требований и ограничений вашего конкретного варианта использования вы можете выбрать наиболее подходящий метод для реализации. Поняв эти методы, вы теперь имеете прочную основу для создания зеркально-обратной функции в своих программах на C++.