自学内容网 自学内容网

1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

在这里插入图片描述

【题目】:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

直接存储滑动窗口内的字符串,这样虽然方便,但是时间复杂度和k相关,如果k = n,此时会达到O(n^2)的复杂度。

class Solution {
public:
    bool hasAllCodes(string s, int k) {
        unordered_set<string> ss;
        for(int l = 0, r = 0; r < s.size(); ++r) {
            if(r - l + 1 == k) {
                ss.insert(s.substr(l, k));
                l++;
            }
        }
        return ss.size() == 1<<k;
    }
};
  • 时间复杂度: O(n*k)
  • 空间复杂度: O(1<<k)

1<<k:相当于pow(2, k)
substr(截取的字符串起始位置, 截取字符串的长度)


原文地址:https://blog.csdn.net/qq_57882997/article/details/145305128

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!