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.
This article is contributed by Aarti_Rathi.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!