1 class Solution { 2 public: 3 vector<long long> countKConstraintSubstrings(string s, int k, vector<vector<int>>& queries) { 4 int n = s.size(); 5 vector<int> count(2, 0); 6 vector<int> right(n, n); 7 vector<long long> prefix(n + 1, 0); 8 int i = 0; 9 for (int j = 0; j < n; ++j) { 10 count[s[j] - '0']++; 11 while (count[0] > k && count[1] > k) { 12 count[s[i] - '0']--; 13 right[i] = j; 14 i++; 15 } 16 prefix[j + 1] = prefix[j] + j - i + 1; 17 } 18 19 vector<long long> res; 20 for (auto& query : queries) { 21 int l = query[0], r = query[1]; 22 int i = min(right[l], r + 1); 23 long long part1 = 1LL * (i - l + 1) * (i - l) / 2; 24 long long part2 = prefix[r + 1] - prefix[i]; 25 res.push_back(part1 + part2); 26 } 27 return res; 28 } 29 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!