游游拿到了一个仅包含小写字母的字符串。游游想截取一段连续子串,需要保证该子串不同的字母种类不超过个。 游游想知道,这个子串长度的最大值是多少?
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到了一个仅包含小写字母的字符串。游游想截取一段连续子串,需要保证该子串不同的字母种类不超过个。
游游想知道,这个子串长度的最大值是多少?
双指针
类似于leetcode
#include <iostream> #include<unordered_map> using namespace std; int main() { int n, k; cin >> n >> k; string s; cin >> s; unordered_map<char, int> mp; auto minIdx = [&]() { int ans = INT32_MAX; for (auto &[_, val] : mp) { ans = min(ans, val); } return ans; }; int l = 0; int ans = 0; for (int r = 0; r < n; r++) { mp[s[r]] = r; if (mp.size() > k) { int min_idx = minIdx(); l = min_idx + 1; mp.erase(s[min_idx]); } ans = max(ans, r - l + 1); } cout << ans; }
26:10
以上就是关于问题游游拿到了一个仅包含小写字母的字符串。游游想截取一段连续子串,需要保证该子串不同的字母种类不超过个。
游游想知道,这个子串长度的最大值是多少?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训