Comprobar si todas las apariciones de un personaje aparecen juntas

Dada una string s y un carácter c , encuentre si todas las apariciones de c aparecen juntas en s o no. Si el carácter c no aparece en la string, la respuesta es verdadera.

Ejemplos 

Input: s = "1110000323", c = '1'
Output: Yes
All occurrences of '1' appear together in
"1110000323"

Input: s  = "3231131", c = '1'
Output: No
All occurrences of 1 are not together

Input: s  = "abcabc", c = 'c'
Output: No
All occurrences of 'c' are not together

Input: s  = "ababcc", c = 'c'
Output: Yes
All occurrences of 'c' are together

La idea es recorrer la string dada, tan pronto como encontremos una ocurrencia de c, seguimos recorriendo hasta encontrar un carácter que no sea c. También establecemos una bandera para indicar que se ven una ocurrencia más de c. Si vemos c nuevamente y se establece la bandera, devolvemos falso.  

C++

// C++ program to find if all occurrences
// of a character appear together in a string.
#include <iostream>
#include <string>
using namespace std;
 
bool checkIfAllTogether(string s, char c)
{
    // To indicate if one or more occurrences
    // of 'c' are seen or not.
    bool oneSeen = false;
 
    // Traverse given string
    int i = 0, n = s.length();
    while (i < n) {
 
        // If current character is same as c,
        // we first check if c is already seen.        
        if (s[i] == c) {
            if (oneSeen == true)
                return false;
 
            // If this is very first appearance of c,
            // we traverse all consecutive occurrences.
            while (i < n && s[i] == c)
                i++;
 
            // To indicate that character is seen  once.
            oneSeen = true;
        }
 
        else
            i++;
    }
    return true;
}
 
// Driver program
int main()
{
    string s = "110029";
    if (checkIfAllTogether(s, '1'))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}

Java

// Java program to find if all
// occurrences of a character
// appear together in a string.
import java.io.*;
 
class GFG {
 
static boolean checkIfAllTogether(String s,
                                    char c)
    {
         
        // To indicate if one or more
        // occurrences of 'c' are seen
        // or not.
        boolean oneSeen = false;
     
        // Traverse given string
        int i = 0, n = s.length();
        while (i < n)
        {
     
            // If current character is
            // same as c, we first check
            // if c is already seen.        
            if (s.charAt(i) == c)
            {
                if (oneSeen == true)
                    return false;
     
                // If this is very first
                // appearance of c, we
                // traverse all consecutive
                // occurrences.
                while (i < n && s.charAt(i) == c)
                    i++;
     
                // To indicate that character
                // is seen once.
                oneSeen = true;
            }
     
            else
                i++;
        }
         
        return true;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
 
        String s = "110029";
         
        if (checkIfAllTogether(s, '1'))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by Sam007.

Python3

# Python program to find
# if all occurrences
# of a character appear
# together in a string.
 
# function to find
# if all occurrences
# of a character appear
# together in a string.
def checkIfAllTogether(s, c) :
     
    # To indicate if one or
    # more occurrences of
    # 'c' are seen or not.
    oneSeen = False
 
    # Traverse given string
    i = 0
    n = len(s)
    while (i < n) :
        # If current character
        # is same as c,
        # we first check
        # if c is already seen.    
        if (s[i] == c) :    
            if (oneSeen == True) :
                return False
            # If this is very first
            # appearance of c,
            # we traverse all
            # consecutive occurrences.
            while (i < n and s[i] == c) :
                i = i + 1
            # To indicate that character
            # is seen once.
            oneSeen = True
 
        else :
            i = i + 1
     
    return True
 
 
# Driver Code
s = "110029";
if (checkIfAllTogether(s, '1')) :
    print ("Yes\n")
else :
    print ("No\n")
 
# This code is contributed by
# Manish Shaw (manishshaw1)

C#

// C# program to find if all occurrences
// of a character appear together in a
// string.
using System;
 
public class GFG {
     
    static bool checkIfAllTogether(string s,
                                     char c)
    {
         
        // To indicate if one or more
        // occurrences of 'c' are seen
        // or not.
        bool oneSeen = false;
     
        // Traverse given string
        int i = 0, n = s.Length;
        while (i < n) {
     
            // If current character is
            // same as c, we first check
            // if c is already seen.        
            if (s[i] == c) {
                if (oneSeen == true)
                    return false;
     
                // If this is very first
                // appearance of c, we
                // traverse all consecutive
                // occurrences.
                while (i < n && s[i] == c)
                    i++;
     
                // To indicate that character
                // is seen once.
                oneSeen = true;
            }
     
            else
                i++;
        }
         
        return true;
    }
     
    // Driver code
    public static void Main()
    {
        string s = "110029";
         
        if (checkIfAllTogether(s, '1'))
            Console.Write( "Yes" );
        else
            Console.Write( "No" );
    }
}
 
// This code is contributed by Sam007.

PHP

<?php
// PHP program to find
// if all occurrences
// of a character appear
// together in a string.
 
// function to find
// if all occurrences
// of a character appear
// together in a string.
function checkIfAllTogether($s, $c)
{
     
    // To indicate if one or
    // more occurrences of
    // 'c' are seen or not.
    $oneSeen = false;
 
    // Traverse given string
    $i = 0; $n = strlen($s);
    while ($i < $n)
    {
 
        // If current character
        // is same as c,
        // we first check
        // if c is already seen.    
        if ($s[$i] == $c)
        {
            if ($oneSeen == true)
                return false;
 
            // If this is very first
            // appearance of c,
            // we traverse all
            // consecutive occurrences.
            while ($i < $n && $s[$i] == $c)
                $i++;
 
            // To indicate that character
            // is seen once.
            $oneSeen = true;
        }
 
        else
            $i++;
    }
    return true;
}
 
// Driver Code
$s = "110029";
if (checkIfAllTogether($s, '1'))
    echo("Yes\n");
else
    echo("No\n");
 
// This code is contributed by Ajit.
?>

Javascript

<script>
 
// Javascript program to find if all
// occurrences of a character appear
// together in a string.
function checkIfAllTogether(s, c)
{
     
    // To indicate if one or more
    // occurrences of 'c' are seen
    // or not.
    let oneSeen = false;
   
    // Traverse given string
    let i = 0, n = s.length;
     
    while (i < n)
    {
         
        // If current character is
        // same as c, we first check
        // if c is already seen.        
        if (s[i] == c)
        {
            if (oneSeen == true)
                return false;
   
            // If this is very first
            // appearance of c, we
            // traverse all consecutive
            // occurrences.
            while (i < n && s[i] == c)
                i++;
   
            // To indicate that character
            // is seen once.
            oneSeen = true;
        }
        else
            i++;
    }
    return true;
}
 
// Driver code
let s = "110029";
       
if (checkIfAllTogether(s, '1'))
    document.write("Yes");
else
    document.write("No");
     
// This code is contributed by mukesh07
 
</script>

Producción: 

Yes

Complejidad de tiempo: O(n), donde n es el número de caracteres de la string. 
Espacio Auxiliar: O(1), 

Sugiera si alguien tiene una mejor solución que sea más eficiente en términos de espacio y tiempo.
Este artículo es una contribución de Aarti_Rathi . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por Archaic y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *