以括号形式打印以 C++ 中字符串拆分的各种方式


在这个问题中,我们给定一个字符串,我们必须将其分解成子字符串,并在括号中打印它们。

让我们举几个例子来更好地理解这个问题,

Input : wxyz
Output :
   (w) (x) (y) (z)
   (w) (x) (yz)
   (w) (xy) (z)
   (w) (xyz)
   (wx) (y) (z)
   (wx) (yz)
   (wxy) (z)
   (wxyz)

说明 − 我们将把字符串分解为所有可能的子字符串。并用括号括住每个子字符串。

现在,由于我们已经理解了这个问题,让我们创建一个解决该问题的方案吧。

在这里,我们将使用递归来解决问题。我们将使用两个参数,一个将是字符串的下一个字符,另一个是输出字符串。未处理的子字符串将在每次迭代时慢慢处理。子集也已创建。

示例

解决问题的程序 −

#include <iostream>
using namespace std;
void substring(string str, int index, string out){
   if (index == str.length())
      cout << out << endl;
   for (int i = index; i < str.length(); i++)
      substring(str, i + 1, out + "(" + str.substr(index, i+1-index) + ")" );
}
int main(){
   string str = "wxyz";
   cout<<”The substring are :”<<endl;
   substring(str, 0, "");
   return 0;
}

输出

The substring are :
(w)(x)(y)(z)
(w)(x)(yz)
(w)(xy)(z)
(w)(xyz)
(wx)(y)(z)
(wx)(yz)
(wxy)(z)
(wxyz)

更新于:03 年 1 月 2020 日

123 浏览

开启你的 职业道路

完成课程以取得认证

开始
广告
© . All rights reserved.