【问题标题】:How do I delete a single character in a string and use recursion in a string如何删除字符串中的单个字符并在字符串中使用递归
【发布时间】:2019-08-30 05:39:43
【问题描述】:

我不确定如何删除字符串中的单个字符,因为根据我的理解,当我使用 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;
}

【问题讨论】:

  • 回答我的第一个问题,arg.erase(random,1) 确实有效。谢谢。

标签: c++ string recursion


【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 2013-02-05
      • 2017-05-17
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      相关资源
      最近更新 更多