当前位置: 首页 > news >正文

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

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

Solution

两种做法,第一种是滑动窗口枚举长度为k的子串,每次都把子串加入到一个unordered_set中,最后判断这个集合的大小是否等于2的k次方即可。

第二种与第一种类似,只不过优化了滑动过程,把窗口内的元素当成一个整数,也是加入到一个unordered_set中,最后判断大小是否为2^k。

class Solution {
public:// 直接哈希的做法bool hasAllCodes1(string s, int k) {int n = s.length();int num = 1 << k;if (n < num + k - 1)return false;unordered_set<string> found_strings;for (int r = 0; r < n; ++r) {int l = r - k + 1;if (l >= 0) {string temp = s.substr(l, r - l + 1);found_strings.insert(temp);if (found_strings.size() == num)return true;}}return found_strings.size() == num;}// 更优化一些的做法bool hasAllCodes(string s, int k) {int n = s.length();int num = 1 << k;int m = 1 << (k - 1);if (n < num + k - 1)return false;unordered_set<int> found_nums;int current_num = 0;for (int r = 0; r < n; ++r) {// char current_char = s[r];// int current_bit = current_char - 'a';current_num = current_num * 2 + s[r] - '0';// cout << current_num << " ";int l = r - k + 1;if (l >= 0) {found_nums.insert(current_num);}if (found_nums.size() == num)return true;if (l >= 0) {current_num -= (s[l] - '0') * m;}// if (l >= 0) {//     string temp = s.substr(l, r - l + 1);//     found_strings.insert(temp);//     if (found_strings.size() == num)//         return true;// }}// cout << endl;// for (auto it = found_nums.begin(); it != found_nums.end(); ++it)//     cout << *it << " ";return found_nums.size() == num;}
};

http://www.dtcms.com/a/412321.html

相关文章:

  • 做网站需要多少空间芜湖网站建设兼职
  • 森动网网站建设好吗自己开发app要钱吗
  • 携程网站建设在阿里巴巴上做网站需要什么条件
  • 北京建设部网站职称网站建设硬件投入表
  • 视频防录屏软件为什么受欢迎?---以点盾云为例
  • 开源AI工具Mobile-Use
  • 做课件ppt网站上海十大网站建设
  • 新乡网站建设策划ftp网站怎么看后台的代码
  • numpy谨慎升级
  • 微信公众号登录wordpress网站吗免费自助小型网站
  • 站长之家官网做co的网站
  • 网站开发语言哪个好聊天网站模板
  • 河南省住房城乡和建设厅网站首页货代到哪个网站开发客户
  • 一元夺宝网站建设2017安徽安庆怎么样
  • 个人网站建设费用做植物提取物的专业网站
  • 做网站的周记10个免费的黑科技网站
  • python做网站好吗app多少钱能做一个
  • 各网站收录常用网站建设软件有哪些
  • 做网站订金为什么需要交那么多职业生涯规划大赛获奖作品
  • 电子商务网站需要做那些准备工作淄博张店外贸建站公司
  • 肇庆网站上排名做网站用html还是python好
  • 怎么网站建设易企推
  • 一级a视网站 做爰片公司网站建设 阜阳
  • 河北婚庆网站建设定制wordpress更改域名后
  • PE文件格式
  • 做网站充值微信必须是企业机关网站建设总结
  • 产品推广的网站怎么做做电影网站赚了几百万
  • xp系统中做网站服务器吗青岛网站制作百家号
  • MR500U工业级5网口4G插卡路由器主板的使用方法和路由器后台操作过程
  • 怀化二医院网站网店运营推广高级实训教程