Open In App

Check if all occurrences of a character appear together

Last Updated : 12 Aug, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given a string s and a character c, find if all occurrences of c appear together in s or not. If the character c does not appear in the string at all, the answer is true.

Examples 

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

The idea is to traverse given string, as soon as we find an occurrence of c, we keep traversing until we find a character which is not c. We also set a flag to indicate that one more occurrences of c are seen. If we see c again and flag is set, then we return false.  

Implementation:

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>


Output: 

Yes

Complexity Analysis:

  • Time Complexity: O(n), where n is the number of characters in the string. 
  • Auxiliary Space: O(1), 

Please suggest if someone has a better solution which is more efficient in terms of space and time.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads