Home
Aptitude
Categories


Home » Interview coding problems/challenges

1[0]1 Pattern Count



1[0]1 Pattern Count: Here, we are going to solve an algorithm problem based on pattern searching came in the coding round of Samsung.
Submitted by Radib Kar, on November 26, 2018

Description:

This article provides solution to an algorithm problem based on pattern searching came in the coding round of Samsung.

Problem statement:

Given a binary string, write an algorithm to find the number of patterns of form 1[0]1 where [0] represents any number of zeroes (minimum requirement is one 0) there should not be any other character except 0 in the [0] sequence.

Solution

Algorithm:

  1. Set l = length of string & initialize count to 0.
  2. Find the number of 1's in the string. If all entry is 1 then no such pattern exists for the string input.
  3. Find first '1' for a 1[0]1 pattern
    While (String [element]!= '1')
    Go to next element.
  4. Check if the next element of the string is '0' or not.
  5. If the next element is '0'
    Continue checking next element until the substring of 0 finishes. ([0] part in the pattern)
  6. Once finished check the next element. If it is '1' increase count.
    In the next iteration this '1' element is going to be starting element of next 1[0]1 pattern.
  7. Continue steps 3 to 6 until string length finishes for processing.
  8. Return count.



C++ implementation for 1[0]1 Pattern Count

#include <bits/stdc++.h>
using namespace std;

int my(string s){
	//set variables
	int l=s.length(),count=0;
	for(int i=0;i<l;i++){
		//count no of 1's
		if(s[i]!='0') 
			count++;
	}
	//if no of 1=total length then no 1[0]1 pattern
	if(count==l) 
		return 0;
	
	int i=0,flag=0,start=0,end=1;
	count=0;

	while(i<l){
		//go to first '1' of a pattern
		while(s[i]!='1'){ 
			i++;
		}
		//first 1 is found,check the next
		i=i+1;
		//if next is a 0
		if(s[i]=='0'){ 
			//procedd till elements are 0
			while(s[i]=='0')
				i++;
			//if the element after end of 0 substring is 1
			if(s[i]=='1'){
				//pattern is found & increase count
				count++;
			}
		}
	}
	return count; //return no of pattern
}

int main()
{  

	cout<<"program to find no of 1[0]1 patterns in string"<<endl;
	string s;
	cout<<"enter string"<<endl;  
	cin>>s;
	int k=my(s);
	cout<<k<<endl;    

	return 0;
}

Output

First run:
program to find no of 1[0]1 patterns in string 
enter string 
001010100001101
4

Second run:
program to find no of 1[0]1 patterns in string 
enter string 
111111111111111111111110 
0





Comments and Discussions

Ad: Are you a blogger? Join our Blogging forum.





Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing » Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates

© https://www.includehelp.com some rights reserved.