Рубрики

Распечатать все способы разрыва строки в скобках

По заданной строке найдите все способы разбить данную строку в форме скобок. Заключите каждую подстроку в круглые скобки.

Примеры:

Input : abc
Output: (a)(b)(c)
        (a)(bc)
        (ab)(c)
        (abc)


Input : abcd
Output : (a)(b)(c)(d)
         (a)(b)(cd)
         (a)(bc)(d)
         (a)(bcd)
         (ab)(c)(d)
         (ab)(cd)
         (abc)(d)
         (abcd)

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

Идея состоит в том, чтобы использовать рекурсию. Мы поддерживаем два параметра — индекс следующего символа, который будет обработан, и выходную строку. Мы начинаем с индекса следующего символа, подлежащего обработке, добавляем подстроку, образованную необработанной строкой, к выходной строке и рекурсируем оставшуюся строку, пока не обработаем всю строку. Мы используем std :: substr для формирования выходной строки. substr (pos, n) возвращает подстроку длины n, которая начинается в позиции pos текущей строки.

На диаграмме ниже показано дерево рекурсии для входной строки «abc». Каждый узел на диаграмме показывает обработанную строку (отмечена зеленым) и необработанную строку (отмечена красным).

Ниже его реализация-

C ++

// C ++ Программа для поиска всех комбинаций
// перекрывающиеся подстроки, сформированные из заданного
// строка
#include <iostream>

using namespace std;

  
// найти все комбинации неперекрывающихся
// подстроки, образованные входной строкой str
// index - индекс следующего символа
// обрабатываться
// out - пока выводим строку

void findCombinations(string str, int index,

                      string out)

{

    if (index == str.length())

        cout << out << endl;

  

    for (int i = index; i < str.length(); i++)

  

        // добавляем подстроку, сформированную str [index,

        // я] для вывода строки

        findCombinations(str, i + 1, out +

          "(" + str.substr(index, i+1-index) + ")" );

}

  
// Код драйвера

int main()

{

    // строка ввода

    string str = "abcd";

  

    findCombinations(str, 0, "");

  

    return 0;

}

Джава

// Java программа для поиска всех комбинаций
// перекрывающиеся подстроки, сформированные из заданного
// строка

  

class GFG 

{

    // найти все комбинации неперекрывающихся

    // подстроки, образованные входной строкой str

    static void findCombinations(String str, int index,

                                 String out)

    {

        if (index == str.length())

            System.out.println(out);

   

        for (int i = index; i < str.length(); i++)

   

            // добавляем подстроку, сформированную str [index,

            // я] для вывода строки

            findCombinations(str, i + 1, out +

                "(" + str.substring(index, i+1) + ")" );

    }

      

    // драйверная программа

    public static void main (String[] args) 

    {

        // строка ввода

        String str = "abcd";

        findCombinations(str, 0, "");

    }

}

  
// Предоставлено Прамод Кумар

python3

# Python3 Программа для поиска всех комбинаций
# перекрывающихся подстрок, образованных из заданного
# строка

  
# найти все комбинации неперекрывающихся
# подстроки, образованные входной строкой str
# index - индекс следующего символа
# быть обработанным
# out - пока что вывести строку

def findCombinations(string, index, out):

    if index == len(string):

        print(out)

  

    for i in range(index, len(string), 1):

  

        # добавить подстроку, образованную str [index,

        # i] для вывода строки

        findCombinations(string, i + 1, out + "(" + 

                         string[index:i + 1] + ")")

  
Код водителя

if __name__ == "__main__":

  

    # строка ввода

    string = "abcd"

    findCombinations(string, 0, "")

  
# Этот код предоставлен
# sanjeev2552

C #

// C # программа для поиска всех комбинаций
// из сформированных непересекающихся подстрок
// из заданной строки

using System;

  

class GFG

{
// найти все комбинации неперекрывающихся
// подстроки, образованные входной строкой str

public static void findCombinations(string str, 

                                    int index, 

                                    string @out)

{

    if (index == str.Length)

    {

        Console.WriteLine(@out);

    }

  

    for (int i = index; i < str.Length; i++)

    {

  

        // добавляем подстроку, образованную

        // str [index, i] для вывода строки

        findCombinations(str, i + 1, @out + "("

                         str.Substring(index, (i + 1) - 

                                       index) + ")");

    }

}

  
// Код драйвера

public static void Main(string[] args)

{

    // строка ввода

    string str = "abcd";

    findCombinations(str, 0, "");

}
}

  
// Этот код предоставлен Shrikant13


Нашпут:

(a)(b)(c)(d)
(a)(b)(cd)
(a)(bc)(d)
(a)(bcd)
(ab)(c)(d)
(ab)(cd)
(abc)(d)
(abcd)

Эта статья предоставлена Aditya Goel . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Распечатать все способы разрыва строки в скобках

0.00 (0%) 0 votes