题目
思路:滑动窗口
- 滑动窗口,几乎可以看成模板题。
right
指针负责把新数据往里面读,如果超过上限,就用left
指针,持续放弃旧有数据。代码:
class Solution {
public:
int equalSubstring(string s, string t, int maxCost) {
int max_len = 0, s_len = s.size(), sum_cost = 0;
int left = 0, right = 0;
for (right = 0; right < s_len; right++) {
sum_cost += abs(s[right] - t[right]);
while (sum_cost > maxCost) {
sum_cost -= abs(s[left] - t[left]);
left += 1;
}
max_len = max(max_len, right - left + 1);
}
return max_len;
}
};