in sliding window variable we grow and shrink size of window dynamically, depending on the need
if(target ==0) return 0;
let left=0;
let minLength = nums.length+1
let sum =0;
for(let right=0; right<nums.length;right++){
sum += nums[right]
while(sum>= target && left<nums.length){
minLength = Math.min(minLength, right-left+1)
sum -= nums[left]
left++
}
}
return minLength == nums.length+1 ? 0 : minLength
let left =0;
let right =0;
let maxl =0;
let map = new Map();
for(right;right<s.length;right++){
if(map.has(s[right])){
left= Math.max(left, map.get(s[right])+1)
}
map.set(s[right],right)
maxl = Math.max(maxl, right - left + 1);
}
return maxl
longest repeating character replacement
function maxLength(s, k) {
let left = 0;
let right = 0;
let maxCharCount = 0;
const visited = {};
while(right<s.length){
const char = s[right]
visited[char] = visited[char] ? visited[char]+1 :1
if(visited[char]>maxCharCount) maxCharCount = visited[char]
if(right-left+1-maxCharCount>k){
visited[s[left]]--;
left++;
}
right++
}
return right - left;
}