leetcode 1208. 尽可能使字符串相等(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 1208. 尽可能使字符串相等(滑动窗口)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你兩個長度相同的字符串,s 和 t。
將 s 中的第 i 個字符變到 t 中的第 i 個字符需要 |s[i] - t[i]| 的開銷(開銷可能為 0),也就是兩個字符的 ASCII 碼值的差的絕對值。
用于變更字符串的最大預算是 maxCost。在轉化字符串時,總開銷應當小于等于該預算,這也意味著字符串的轉化可能是不完全的。
如果你可以將 s 的子字符串轉化為它在 t 中對應的子字符串,則返回可以轉化的最大長度。
如果 s 中沒有子字符串可以轉化成 t 中對應的子字符串,則返回 0。
示例 1:
輸入:s = “abcd”, t = “bcdf”, cost = 3
輸出:3
解釋:s 中的 “abc” 可以變為 “bcd”。開銷為 3,所以最大長度為 3
代碼
class Solution {public int equalSubstring(String s, String t, int maxCost) {int l=0,r=0,n=s.length(),cost=0,res=0;for(;l<n&&r<n;l++){while (r<n&&cost<=maxCost)//盡量向右滑動{int abs = Math.abs(s.charAt(r) - t.charAt(r));if( cost+ abs >maxCost) break;cost+= abs;r++;}res= Math.max(res,r-l);//記錄最大的窗口cost-= Math.abs(s.charAt(l)-t.charAt(l));//將最左邊的元素移除窗口}return res;} }總結
以上是生活随笔為你收集整理的leetcode 1208. 尽可能使字符串相等(滑动窗口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring—集成Junit
- 下一篇: 梦到好多死人头啥意思