

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int main() {
// Tối ưu hóa vào ra dữ liệu
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string s;
if (!(cin >> s)) return 0;
int k;
cin >> k;
int n = s.length();
int max_len = 0;
// Duyệt qua tất cả các ký tự từ 'a' đến 'z' làm ký tự mục tiêu
for (char c = 'a'; c <= 'z'; ++c) {
int left = 0;
int diff_count = 0; // Đếm số ký tự khác c trong cửa sổ hiện tại
for (int right = 0; right < n; ++right) {
if (s[right] != c) {
diff_count++;
}
// Nếu số ký tự khác c vượt quá k, thu hẹp cửa sổ từ bên trái
while (diff_count > k) {
if (s[left] != c) {
diff_count--;
}
left++;
}
// Cập nhật độ dài đoạn con dài nhất
max_len = max(max_len, right - left + 1);
}
}
cout << max_len << "\n";
return 0;
}Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Dùng cửa sổ trượt và 2 con trỏ nha bạn!
Code tham khảo:
//Đ.Thiện
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string s;
ll k;
cin >> s >> k;
ll n = s.size();
ll a[26] = {};
ll l = 0, r = 0, mx = 0, kq = 0;
while (r < n)
{
a[s[r] - 'a']++;
mx = max(mx, a[s[r] - 'a']);
while (r - l + 1 - mx > k)
{
a[s[l] - 'a']--;
l++;
}
kq = max(kq, r - l + 1);
r++;
}
cout << kq;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin