Рубрики

Проверьте, можно ли разбить данную строку на четыре разных строки

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

Примеры:

Input : str[] = "geeksforgeeks"
Output : Yes
"geeks", "for", "gee", "ks" are four 
distinct strings that can form from
given string.

Input : str[] = "aaabb"
Output : No

Заметьте, если длина строки больше или равна 10, то каждый раз можно разбить на четыре части. Предположим, что длина равна 10, тогда можно сделать строку длиной 1, 2, 3, 4.
Для строки длиной менее 10 мы можем использовать грубую силу, то есть перебрать все возможные способы разбиения строки и проверить каждый из них.

If length is more than 10
   return true
Else (If length is less than 10)
   Use Brute Force method to check
   if we can break it in four distinct
   strings.

Ниже приведена реализация вышеуказанной идеи.

C ++

// C ++ программа для проверки, можем ли мы разбить строку
// в четыре разных строки.
#include<bits/stdc++.h>

using namespace std;

  
// Возвращаем, если данная строка может быть пролита или нет.

bool check(string s)

{

    // Мы всегда можем разбить строку размером 10 или

    // подробнее в четыре разных строки.

    if (s.size() >= 10)

        return true;

  

    // Грубая сила

    for (int i =1; i < s.size(); i++)

    {

        for (int j = i + 1; j < s.size(); j++)

        {

            for (int k = j + 1; k < s.size(); k++)

            {

                // Делаем 4 строки из заданной строки

                string s1 = s.substr(0, i);

                string s2 = s.substr(i, j - i);

                string s3 = s.substr(j, k - j);

                string s4 = s.substr(k, s.size() - k);

  

                // Проверка, различны ли они или нет.

                if (s1 != s2 && s1 != s3 && s1 != s4 &&

                        s2 != s3 && s2 != s4 && s3 != s4)

                    return true;

            }

        }

    }

  

    return false;

}

  
// Управляемая программа

int main()

{

    string str = "aaabb";

  

    (check(str))? (cout << "Yes" << endl):

                  (cout << "No" << endl);

  

    return 0;

}

Джава

// Java-программа для проверки, можем ли мы разбить строку
// в четыре разных строки.

class GFG

{

  

    // Возвращаем true, если обе строки равны

    public static boolean strcheck(String s1, String s2) 

    {

        if (s1.compareTo(s2) != 0)

            return false;

        return true;

    }

  

    // Возвращаем, если данная строка может быть пролита или нет.

    public static boolean check(String s) 

    {

        if (s.length() >= 10)

            return true;

  

        // Грубая сила

        for (int i = 1; i < s.length(); i++) 

        {

            for (int j = i + 1; j < s.length(); j++) 

            {

                for (int k = j + 1; k < s.length(); k++) 

                {

                      

                    // Делаем 4 строки из заданной строки

                    String s1 = "", s2 = "", s3 = "", s4 = "";

                    try

                    {

                        s1 = s.substring(0, i);

                        s2 = s.substring(i, j - i);

                        s3 = s.substring(j, k - j);

                        s4 = s.substring(k, s.length() - k);

                    

                    catch (StringIndexOutOfBoundsException e) {

                    }

  

                    // Проверка, различны ли они или нет.

                    if (strcheck(s1, s2) && strcheck(s1, s3) && 

                        strcheck(s1, s4) && strcheck(s2, s3) && 

                        strcheck(s2, s4) && strcheck(s3, s4))

                        return true;

                }

            }

        }

  

        return false;

    }

  

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

    public static void main(String[] args)

    {

        String str = "aaabb";

        if (check(str))

            System.out.println("Yes");

        else

            System.out.println("No");

    }

}

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

python3

# Программа Python3, чтобы проверить, можем ли мы
# разбить на четыре строки.

  
# Возврат, если данное может быть
# пролито или нет.

def check(s):

  

    # Мы всегда можем сломать размер 10 или

    # больше в четыре отдельных строки.

    if (len(s) >= 10):

        return True

  

    # Грубая сила

    for i in range(1, len(s)): 

      

        for j in range(i + 1, len(s)): 

          

            for k in range(j + 1, len(s)):

              

                # Изготовление 4 из данного

                s1 = s[0:i] 

                s2 = s[i:j - i]

                s3 = s[j: k - j]

                s4 = s[k: len(s) - k]

                  

                # Проверка, различны ли они или нет.

                if (s1 != s2 and s1 != s3 and s1 != s4 and

                    s2 != s3 and s2 != s4 and s3 != s4): 

                    return True

              

    return False

  
Код водителя

if __name__ == '__main__':

    str = "aaabb"

  

    print("Yes") if(check(str)) else print("NO")

  
# Этот код добавлен
# от SHUBHAMSINGH10

C #

// C # программа для проверки, можем ли мы разбить строку
// в четыре разных строки.

using System;

      

class GFG

{

  

    // Возвращаем true, если обе строки равны

    public static Boolean strcheck(String s1,

                                   String s2) 

    {

        if (s1.CompareTo(s2) != 0)

            return false;

        return true;

    }

  

    // Возвращаем, если задана строка

    // может пролиться или нет.

    public static Boolean check(String s) 

    {

        if (s.Length >= 10)

            return true;

  

        // Грубая сила

        for (int i = 1; i < s.Length; i++) 

        {

            for (int j = i + 1; j < s.Length; j++) 

            {

                for (int k = j + 1; k < s.Length; k++) 

                {

                      

                    // Делаем 4 строки из заданной строки

                    String s1 = "", s2 = ""

                           s3 = "", s4 = "";

                    try

                    {

                        s1 = s.Substring(0, i);

                        s2 = s.Substring(i, j - i);

                        s3 = s.Substring(j, k - j);

                        s4 = s.Substring(k, s.Length - k);

                    

                    catch (Exception e) {

                    }

  

                    // Проверка, различны ли они или нет.

                    if (strcheck(s1, s2) && strcheck(s1, s3) && 

                        strcheck(s1, s4) && strcheck(s2, s3) && 

                        strcheck(s2, s4) && strcheck(s3, s4))

                        return true;

                }

            }

        }

        return false;

    }

  

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

    public static void Main(String[] args)

    {

        String str = "aaabb";

        if (check(str))

            Console.WriteLine("Yes");

        else

            Console.WriteLine("No");

    }

}

  
// Этот код предоставлен Принчи Сингхом

Выход:

No

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

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

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

Проверьте, можно ли разбить данную строку на четыре разных строки

0.00 (0%) 0 votes