Check If a String Contains All Binary Codes of Size K

Given a binary string s and an integer k.

Return True if every binary code of length k is a substring of s. Otherwise, return False.

Example:

Input: s = "00110110", k = 2
Output: true
Explanation: The binary codes of length 2 are "00", "01", "10" and "11". They can be all found as substrings at indicies 0, 1, 3 and 2 respectively.

Approach:

C++

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

bool hasAllCodes(string sint k)
{
    unordered_set<stringst;
    if (k > s.size())
        return false;
    for (int i = 0i <= s.length() - ki++)
    {
        st.insert(s.substr(ik));
    }
    if (st.size() == pow(2k))
        return true;
    return false;
}

int main()
{
    string s = "00110110";
    int k = 2;

    if (hasAllCodes(sk))
        cout << "true";
    else
        cout << "false";

    return 0;
}


No comments:

Post a Comment