Как мне удалить один символ в строке и использовать рекурсию в строке

#c #string #recursion

#c #строка #рекурсия

Вопрос:

Я не уверен, как бы я удалил один символ в своей строке, потому что, когда я использую str.erase(x,y), насколько я понимаю, это приведет к удалению всего от «x» до «y». Однако я просто хочу удалить один символ в «x».

Мне также нужно использовать рекурсию для этой проблемы.

Мне нужно удалить случайный символ из строки и вывести его и продолжать делать это, пока строка не станет пустой.

 string ObliterateString(string arg)
{

  int length = arg.length();
  int random = 0;

  while(length > 0)
  {
    if(length <= 1)
    {
      return ObliterateString("");
    }
    else{
      random = rand() % length; //Get a random number that is between 0 and the length of the string
      arg.erase(random,random);
      cout << arg << endl;
    }
    length--;
  }

  return arg;
}
  

Комментарии:

1. Чтобы ответить на мой первый вопрос, arg.erase(random,1) действительно работает. Спасибо.

Ответ №1:

Рекурсивная процедура должна обрабатываться без цикла while: попробуйте это:

 string ObliterateString(string arg)
{
    int length = arg.length();

    if (length <= 1)
    {
        return "";
    }
    else
    {
        int random;
        random = rand() % length;
        arg.erase(random, 1);
        cout << arg << endl;
        arg = ObliterateString(arg);
    }

    return arg;
}
  

Ответ №2:

 void ObliterateString(string arg) {
  if (arg.empty())
    return;
  random = rand() % arg.length(); //Get a random number that is between 0 and the length of the string
  arg.erase(random, 1);
  cout << arg << endl;
  ObliterateString(arg);
}