91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用leetcode使字符串相等

發布時間:2021-12-15 14:31:40 來源:億速云 閱讀:157 作者:iii 欄目:大數據

本篇內容介紹了“如何用leetcode使字符串相等”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、題目內容

給你兩個長度相同的字符串,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。

示例 2:

輸入:s = "abcd", t = "cdef", cost = 3
輸出:1
解釋:s 中的任一字符要想變成 t 中對應的字符,其開銷都是 2。因此,最大長度為 1。

示例 3:

輸入:s = "abcd", t = "acde", cost = 0
輸出:1
解釋:你無法作出任何改動,所以最大長度為 1。

 

提示:

1 <= s.length, t.length <= 10^5
0 <= maxCost <= 10^6
s 和 t 都只含小寫英文字母。

二、解題思路

滑動窗口,先計算各個對應位置的字母ASCII碼的差值,然后從左到右累計開銷,如果大于最大開銷,則窗口左端右移,并減去原始左端的開銷,同時更新最大長度。最后再次更新最大長度即可。

三、代碼

class Solution:
    def equalSubstring(self, s: str, t: str, maxCost: int) -> int:
        n = len(s)
        diff = []
        for right in range(n):
            diff.append(abs(ord(t[right]) - ord(s[right])))

        left, right = 0, 0
        sums = 0
        max_length = 0
        for right in range(n):
            sums += diff[right]

            while sums > maxCost:
                max_length = max(max_length, right - left)
                sums -= diff[left]
                left += 1
        max_length = max(max_length, right - left + 1)
        return max_length


if __name__ == '__main__':
    ss = Solution()
    # s = "abcd"
    # t = "cdef"
    # cost = 3
    # s = "abcd"
    # t = "bcdf"
    # cost = 3
    s = "abcd"
    t = "bcdf"
    cost = 3
    ans = ss.equalSubstring(s, t, cost)
    print(ans)

“如何用leetcode使字符串相等”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆德县| 华宁县| 宜兴市| 保定市| 香格里拉县| 丹寨县| 长岭县| 济阳县| 山西省| 洛川县| 永兴县| 扎兰屯市| 辽宁省| 淳化县| 瑞金市| 长春市| 大关县| 房山区| 平度市| 邯郸市| 榆社县| 茌平县| 剑川县| 棋牌| 宁陵县| 两当县| 慈溪市| 明水县| 开平市| 壤塘县| 岐山县| 铜川市| 韶山市| 西乌珠穆沁旗| 徐州市| 霸州市| 津南区| 尼勒克县| 那坡县| 大冶市| 乌恰县|