C ++: перевернуть строку с помощью рекурсии

Просто эта проблема ... Gitbox был виноват. Возможно, у вас был запуск графического интерфейса, который вызывал проблемы.

0
задан huskypanda 18 March 2019 в 01:59
поделиться

3 ответа

void reverse(string &word) 
{
    string temp = word;
    if(temp.length != 0)
    {
       cout << temp.at(temp.length()-1);
       reverse(temp.erase(temp.length()-1));
    }
    else
       cout << "\ndone\n";
}

Это напечатает в обратном порядке и не изменит исходную строку, которая была передана. Если вы хотите изменить исходную строку, просто удалите переменную temp.

0
ответ дан Programmer1010 18 March 2019 в 01:59
поделиться

Алгоритм такой:

  • Если длина строки меньше 2, просто верните
  • обрезать первый и последний символы слова для создания подстроки
  • рекурсивно вызовите reverse для вашей подстроки
  • После возвращения из рекурсии добавьте к исходному «последнему символу» префикс и добавьте к исходному «первому символу» окончание строки
[117 ] Вот, пожалуйста:

void reverse(string& word)
{
    size_t len = word.size();

    if (len < 2)
    {
        return;
    }

    char first = word[0];
    char last = word[len - 1];
    string inner;

    if (len > 2)
    {
        inner = word.substr(1, len - 2);
        reverse(inner);
    }
    word = last + inner + first;
}
0
ответ дан selbie 18 March 2019 в 01:59
поделиться

Не рекурсивный способ достижения того же самого может быть:

0
ответ дан Santosh Chauhan 18 March 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: