题目

image.png

思路:滑动窗口

  • 滑动窗口,几乎可以看成模板题。
  • right指针负责把新数据往里面读,如果超过上限,就用left指针,持续放弃旧有数据。

    代码:

    1. class Solution {
    2. public:
    3. int equalSubstring(string s, string t, int maxCost) {
    4. int max_len = 0, s_len = s.size(), sum_cost = 0;
    5. int left = 0, right = 0;
    6. for (right = 0; right < s_len; right++) {
    7. sum_cost += abs(s[right] - t[right]);
    8. while (sum_cost > maxCost) {
    9. sum_cost -= abs(s[left] - t[left]);
    10. left += 1;
    11. }
    12. max_len = max(max_len, right - left + 1);
    13. }
    14. return max_len;
    15. }
    16. };