# Check if an encoding represents a unique binary string

• Difficulty Level : Easy
• Last Updated : 20 Jul, 2022

Given an encoding of a binary string of length k, the task is to find if the given encoding uniquely identifies a binary string or not. The encoding has counts of contiguous 1s (separated by 0s).
For example, encoding of 11111 is {5}, encoding of 01101010 is {2, 1, 1} and encoding of 111011 is {3, 2}.

Examples :

```Input: encoding[] = {3, 3, 3}
Length, k = 12
Output: No

Explanation: There are more than one possible
binary strings. The strings are 111011101110
and 011101110111. Hence “No”

Input: encoding[] = {3, 3, 2}
Length, k = 10
Output: Yes

Explanation: There is only one possible encoding
that is 1110111011```

A naive approach is to take an empty string and traverse through the n integers to no of 1s as given in encoding and then add 1 zero to it, then encoding 1s, and at the end check if the string length is equal to k then print “Yes” or print “No”

An efficient approach will be to add all the n integers to sum, and then add (n-1) to sum and check if it is equal to K, as n-1 will be the number of zeros in between every 1’s. Check if sum is equal to k, to get exactly one string or else there are more or none.

Implementation:

## C++

 `// C++ program to check if given encoding``// represents a single string.``#include ``using` `namespace` `std;` `bool` `isUnique(``int` `a[], ``int` `n, ``int` `k)``{``    ``int` `sum = 0;``    ``for` `(``int` `i = 0; i < n; i++)``        ``sum += a[i];``    ` `    ``sum += n - 1;``    ` `    ``// Return true if sum becomes k``    ``return` `(sum == k);``}` `// Driver Code``int` `main()``{` `int` `a[] = {3, 3, 3};``int` `n = ``sizeof``(a) / ``sizeof``(a);``int` `k = 12;``if` `(isUnique(a, n, k))``    ``cout << ``"Yes"``;``else``    ``cout << ``"No"``;``return` `0;``}`

## Java

 `// Java program to check if given encoding``// represents a single string.``import` `java.io.*;` `class` `GFG``{``    ``static` `boolean` `isUnique(``int` `[]a, ``int` `n, ``int` `k)``    ``{``        ``int` `sum = ``0``;``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``sum += a[i];``        ` `        ``sum += n - ``1``;``        ` `        ``// Return true if sum becomes k``        ``return` `(sum == k);``    ``}``    ` `    ``// Driver Code``    ``static` `public` `void` `main (String[] args)``    ``{``        ``int` `[]a = {``3``, ``3``, ``3``};``        ``int` `n = a.length;``        ``int` `k = ``12``;``        ``if` `(isUnique(a, n, k))``            ``System.out.println(``"Yes"``);``        ``else``            ``System.out.println(``"No"``);``    ``}``}` `// This code is contributed by vt_m`

## Python3

 `# Python 3 program to check if given``# encoding represents a single string.` `def` `isUnique(a, n, k):``    ``sum` `=` `0``    ``for` `i ``in` `range``(``0``, n, ``1``):``        ``sum` `+``=` `a[i]``    ` `    ``sum` `+``=` `n ``-` `1``    ` `    ``# Return true if sum becomes k``    ``return` `(``sum` `=``=` `k)` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``a ``=` `[``3``, ``3``, ``3``]``    ``n ``=` `len``(a)``    ``k ``=` `12``    ``if` `(isUnique(a, n, k)):``        ``print``(``"Yes"``)``    ``else``:``        ``print``(``"No"``)` `# This code is contributed by``# Surndra_Gangwar`

## C#

 `// C# program to check if given encoding``// represents a single string.``using` `System;` `class` `GFG``{``    ``static` `bool` `isUnique(``int` `[]a, ``int` `n, ``int` `k)``    ``{``        ``int` `sum = 0;``        ``for` `(``int` `i = 0; i < n; i++)``            ``sum += a[i];``        ` `        ``sum += n - 1;``        ` `        ``// Return true if sum becomes k``        ``return` `(sum == k);``    ``}``    ` `    ``// Driver Code``    ``static` `public` `void` `Main ()``    ``{``        ``int` `[]a = {3, 3, 3};``        ``int` `n = a.Length;``        ``int` `k = 12;``        ``if` `(isUnique(a, n, k))``            ``Console.WriteLine(``"Yes"``);``        ``else``            ``Console.WriteLine(``"No"``);``                ` `    ``}``}` `// This code is contributed by vt_m`

## PHP

 ``

## Javascript

 ``

Output

`No`

Time complexity : O(n)
Auxiliary Space : O(1)

This article is contributed by Striver. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up