logo

Verifique se determinada string pode ser dividida em quatro strings distintas

Experimente no GfG Practice ' title=

Dada uma string, a tarefa é verificar se podemos dividi-la em 4 strings de forma que cada string não seja vazia e seja diferente da outra.

Exemplos:   

Entrada : str[] = 'geeksforgeeks'
Saída : Sim
'geeks' 'for' 'gee' 'ks' são quatro strings distintas que podem ser formadas a partir de uma determinada string.

Entrada : str[] = 'aaabb'
Saída : Não



Observe se o comprimento da string é maior ou igual a 10 então cada vez pode ser dividida em quatro partes. Suponha que o comprimento seja 10, então uma corda de comprimento 1 2 3 4 pode ser feita. 
Para strings com comprimento inferior a 10, podemos usar força bruta, ou seja, iterar todas as formas possíveis de dividir a string e verificar cada uma delas. 

Se comprimento é superior a 10
retornar verdadeiro
Outro (Se o comprimento for inferior a 10)
Use o método Brute Force para verificar se podemos quebrá-lo em quatro strings distintas.

Abaixo está a implementação da ideia acima. 

C++
// C++ program to check if we can break a string // into four distinct strings. #include   using namespace std; // Return if the given string can be split or not. bool check(string s) {  // We can always break a string of size 10 or  // more into four distinct strings.  if (s.size() >= 10)  return true;  // Brute Force  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++)  {  // Making 4 string from the given string  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);  // Checking if they are distinct or not.  if (s1 != s2 && s1 != s3 && s1 != s4 &&  s2 != s3 && s2 != s4 && s3 != s4)  return true;  }  }  }  return false; } // Driven Program int main() {  string str = 'aaabb';  (check(str))? (cout << 'Yes' << endl):  (cout << 'No' << endl);  return 0; } 
Java
// Java program to check if we can break a string  // into four distinct strings.  class GFG {  // Return true if both strings are equal  public static boolean strcheck(String s1 String s2)   {  if (s1 != s2)  return false;  return true;  }  // Return if the given string can be split or not.  public static boolean check(String s)   {  if (s.length() >= 10)  return true;  // Brute Force  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++)   {    // Making 4 string from the given string  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) {  }  // Checking if they are distinct or not.  if (strcheck(s1 s2) && strcheck(s1 s3) &&   strcheck(s1 s4) && strcheck(s2 s3) &&   strcheck(s2 s4) && strcheck(s3 s4))  return true;  }  }  }  return false;  }  // Driver code  public static void main(String[] args)  {  String str = 'aaabb';  if (check(str))  System.out.println('Yes');  else  System.out.println('No');  } } // This code is contributed by // sanjeev2552 
Python
# Python3 program to check if we can  # break a into four distinct strings.  # Return if the given string can be  # split or not.  def check(s): # We can always break a of size 10 or  # more into four distinct strings.  if (len(s) >= 10): return True # Brute Force  for i in range(1 len(s)): for j in range(i + 1 len(s)): for k in range(j + 1 len(s)): # Making 4 from the given  s1 = s[0:i] s2 = s[i:j - i] s3 = s[j: k - j] s4 = s[k: len(s) - k] # Checking if they are distinct or not.  if (s1 != s2 and s1 != s3 and s1 != s4 and s2 != s3 and s2 != s4 and s3 != s4): return True return False # Driver Code  if __name__ == '__main__': str = 'aaabb' print('Yes') if(check(str)) else print('NO') # This code is contributed # by SHUBHAMSINGH10 
C#
// C# program to check if we can break a string  // into four distinct strings.  using System;   class GFG {  // Return true if both strings are equal  public static Boolean strcheck(String s1  String s2)   {  if (s1.CompareTo(s2) != 0)  return false;  return true;  }  // Return if the given string  // can be split or not.  public static Boolean check(String s)   {  if (s.Length >= 10)  return true;  // Brute Force  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++)   {    // Making 4 string from the given string  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) {  }  // Checking if they are distinct or not.  if (strcheck(s1 s2) && strcheck(s1 s3) &&   strcheck(s1 s4) && strcheck(s2 s3) &&   strcheck(s2 s4) && strcheck(s3 s4))  return true;  }  }  }  return false;  }  // Driver code  public static void Main(String[] args)  {  String str = 'aaabb';  if (check(str))  Console.WriteLine('Yes');  else  Console.WriteLine('No');  } } // This code is contributed by Princi Singh 
JavaScript
<script>  // JavaScript program to check if we can break a string   // into four distinct strings.     // Return true if both strings are equal  function strcheck(s1 s2)   {  if (s1.localeCompare(s2) != 0)  return false;  return true;  }    // Return if the given string can be split or not.  function check(s)   {  if (s.length >= 10)  return true;    // Brute Force  for (let i = 1; i < s.length; i++)   {  for (let j = i + 1; j < s.length; j++)   {  for (let k = j + 1; k < s.length; k++)   {    // Making 4 string from the given string  let s1 = '' s2 = '' s3 = '' s4 = '';  s1 = s.substring(0 i);  s2 = s.substring(i i + j - i);  s3 = s.substring(j j + k - j);  s4 = s.substring(k k + s.length - k);    // Checking if they are distinct or not.  if (strcheck(s1 s2) && strcheck(s1 s3) &&   strcheck(s1 s4) && strcheck(s2 s3) &&   strcheck(s2 s4) && strcheck(s3 s4))  return true;  }  }  }    return false;  }    let str = 'aaabb';  if (check(str))  document.write('Yes');  else  document.write('No');   </script> 
PHP
 // Return true if the given string can be split into four distinct strings function check($s) { // We can always break a string of size 10 or more into four distinct strings if (strlen($s) >= 10) { return true; } // Brute Force for ($i = 1; $i < strlen($s); $i++) { for ($j = $i + 1; $j < strlen($s); $j++) { for ($k = $j + 1; $k < strlen($s); $k++) { // Making 4 from the given string $s1 = substr($s 0 $i); $s2 = substr($s $i $j - $i); $s3 = substr($s $j $k - $j); $s4 = substr($s $k strlen($s) - $k); // Checking if they are distinct or not if ($s1 != $s2 && $s1 != $s3 && $s1 != $s4 && $s2 != $s3 && $s2 != $s4 && $s3 != $s4) { return true; } } } } return false; } // Driver Code $str = 'aaabb'; echo (check($str) ? 'Yes' : 'NO'); ?> 

Saída
No

Complexidade de tempo : Sobre3
Espaço Auxiliar: Sobre)

 

Criar questionário