ভিডিওতে দেখো — YouTube @algonur_com
কোড
Python
def characterReplacement(s: str, k: int) -> int:
count = {}
l = best = maxCount = 0
for r, c in enumerate(s):
count[c] = count.get(c, 0) + 1
maxCount = max(maxCount, count[c])
if (r - l + 1) - maxCount > k:
count[s[l]] -= 1
l += 1
best = max(best, r - l + 1)
return bestJava
public int characterReplacement(String s, int k) {
int[] cnt = new int[26]; int l=0, best=0, maxCnt=0;
for (int r=0; r<s.length(); r++) {
maxCnt = Math.max(maxCnt, ++cnt[s.charAt(r)-'A']);
if (r-l+1-maxCnt > k) cnt[s.charAt(l++)-'A']--;
best = Math.max(best, r-l+1);
}
return best;
}Kotlin
fun characterReplacement(s: String, k: Int): Int {
val cnt = IntArray(26); var l=0; var best=0; var maxCnt=0
for (r in s.indices) {
maxCnt = maxOf(maxCnt, ++cnt[s[r]-'A'])
if (r-l+1-maxCnt > k) cnt[s[l++]-'A']--
best = maxOf(best, r-l+1)
}
return best
}C++
int characterReplacement(string s, int k) {
int cnt[26]={}, l=0, best=0, maxCnt=0;
for (int r=0; r<s.size(); r++) {
maxCnt = max(maxCnt, ++cnt[s[r]-'A']);
if (r-l+1-maxCnt > k) cnt[s[l++]-'A']--;
best = max(best, r-l+1);
}
return best;
}C
int characterReplacement(char* s, int k) {
int cnt[26]={0},l=0,best=0,maxCnt=0,n=strlen(s);
for(int r=0;r<n;r++){
int c=s[r]-'A'; cnt[c]++;
if(cnt[c]>maxCnt)maxCnt=cnt[c];
if(r-l+1-maxCnt>k) cnt[s[l++]-'A']--;
if(r-l+1>best)best=r-l+1;
}
return best;
}জটিলতা
O(n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(1)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Longest Substring Without Repeating Charactersপরের সমস্যাPermutation in String →