编程练习
盡可能使字符串相等
給你兩個(gè)長(zhǎng)度相同的字符串,s 和 t。
將 s 中的第 i 個(gè)字符變到 t 中的第 i 個(gè)字符需要 |s[i] - t[i]| 的開(kāi)銷(xiāo)(開(kāi)銷(xiāo)可能為 0),也就是兩個(gè)字符的 ASCII 碼值的差的絕對(duì)值。
用于變更字符串的最大預(yù)算是 maxCost。在轉(zhuǎn)化字符串時(shí),總開(kāi)銷(xiāo)應(yīng)當(dāng)小于等于該預(yù)算,這也意味著字符串的轉(zhuǎn)化可能是不完全的。
如果你可以將 s 的子字符串轉(zhuǎn)化為它在 t 中對(duì)應(yīng)的子字符串,則返回可以轉(zhuǎn)化的最大長(zhǎng)度。
如果 s 中沒(méi)有子字符串可以轉(zhuǎn)化成 t 中對(duì)應(yīng)的子字符串,則返回 0。
示例 1:
輸入:s = “abcd”, t = “bcdf”, cost = 3
輸出:3
解釋:s 中的 “abc” 可以變?yōu)?“bcd”。開(kāi)銷(xiāo)為 3,所以最大長(zhǎng)度為 3。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/get-equal-substrings-within-budget
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
刪除字符串中的所有相鄰重復(fù)項(xiàng) II
給你一個(gè)字符串 s,「k 倍重復(fù)項(xiàng)刪除操作」將會(huì)從 s 中選擇 k 個(gè)相鄰且相等的字母,并刪除它們,使被刪去的字符串的左側(cè)和右側(cè)連在一起。
你需要對(duì) s 重復(fù)進(jìn)行無(wú)限次這樣的刪除操作,直到無(wú)法繼續(xù)為止。
在執(zhí)行完所有刪除操作后,返回最終得到的字符串。
本題答案保證唯一。
示例 1:
輸入:s = “abcd”, k = 2
輸出:“abcd”
解釋:沒(méi)有要?jiǎng)h除的內(nèi)容。
示例 2:
輸入:s = “deeedbbcccbdaa”, k = 3
輸出:“aa”
解釋:
先刪除 “eee” 和 “ccc”,得到 “ddbbbdaa”
再刪除 “bbb”,得到 “dddaa”
最后刪除 “ddd”,得到 “aa”
形成目標(biāo)數(shù)組的子數(shù)組最少增加次數(shù)
給你一個(gè)整數(shù)數(shù)組 target 和一個(gè)數(shù)組 initial ,initial 數(shù)組與 target 數(shù)組有同樣的維度,且一開(kāi)始全部為 0 。
請(qǐng)你返回從 initial 得到 target 的最少操作次數(shù),每次操作需遵循以下規(guī)則:
在 initial 中選擇 任意 子數(shù)組,并將子數(shù)組中每個(gè)元素增加 1 。
答案保證在 32 位有符號(hào)整數(shù)以?xún)?nèi)。
示例 1:
輸入:target = [1,2,3,2,1]
輸出:3
解釋:我們需要至少 3 次操作從 intial 數(shù)組得到 target 數(shù)組。
[0,0,0,0,0] 將下標(biāo)為 0 到 4 的元素(包含二者)加 1 。
[1,1,1,1,1] 將下標(biāo)為 1 到 3 的元素(包含二者)加 1 。
[1,2,2,2,1] 將下表為 2 的元素增加 1 。
[1,2,3,2,1] 得到了目標(biāo)數(shù)組。
最小覆蓋子串
給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 “” 。
注意:如果 s 中存在這樣的子串,我們保證它是唯一的答案。
示例 1:
輸入:s = “ADOBECODEBANC”, t = “ABC”
輸出:“BANC”
示例 2:
輸入:s = “a”, t = “a”
輸出:“a”
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-window-substring
替換子串得到平衡字符串
有一個(gè)只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四種字符,且長(zhǎng)度為 n 的字符串。
假如在該字符串中,這四個(gè)字符都恰好出現(xiàn) n/4 次,那么它就是一個(gè)「平衡字符串」。
給你一個(gè)這樣的字符串 s,請(qǐng)通過(guò)「替換一個(gè)子串」的方式,使原字符串 s 變成一個(gè)「平衡字符串」。
你可以用和「待替換子串」長(zhǎng)度相同的 任何 其他字符串來(lái)完成替換。
請(qǐng)返回待替換子串的最小可能長(zhǎng)度。
如果原字符串自身就是一個(gè)平衡字符串,則返回 0。
示例 1:
輸入:s = “QWER”
輸出:0
解釋:s 已經(jīng)是平衡的了。
示例 2:
輸入:s = “QQWE”
輸出:1
解釋:我們需要把一個(gè) ‘Q’ 替換成 ‘R’,這樣得到的 “RQWE” (或 “QRWE”) 是平衡的。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/replace-the-substring-for-balanced-string
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
非遞減數(shù)列
給你一個(gè)長(zhǎng)度為 n 的整數(shù)數(shù)組,請(qǐng)你判斷在 最多 改變 1 個(gè)元素的情況下,該數(shù)組能否變成一個(gè)非遞減數(shù)列。
我們是這樣定義一個(gè)非遞減數(shù)列的: 對(duì)于數(shù)組中所有的 i (0 <= i <= n-2),總滿(mǎn)足 nums[i] <= nums[i + 1]。
示例 1:
輸入: nums = [4,2,3]
輸出: true
解釋: 你可以通過(guò)把第一個(gè)4變成1來(lái)使得它成為一個(gè)非遞減數(shù)列。
數(shù)組的度
給定一個(gè)非空且只包含非負(fù)數(shù)的整數(shù)數(shù)組 nums,數(shù)組的度的定義是指數(shù)組里任一元素出現(xiàn)頻數(shù)的最大值。
你的任務(wù)是在 nums 中找到與 nums 擁有相同大小的度的最短連續(xù)子數(shù)組,返回其長(zhǎng)度。
示例 1:
輸入:[1, 2, 2, 3, 1]
輸出:2
解釋:
輸入數(shù)組的度是2,因?yàn)樵?和2的出現(xiàn)頻數(shù)最大,均為2.
連續(xù)子數(shù)組里面擁有相同度的有如下所示:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
最短連續(xù)子數(shù)組[2, 2]的長(zhǎng)度為2,所以返回2.
檢查兩個(gè)字符串?dāng)?shù)組是否相等
給你兩個(gè)字符串?dāng)?shù)組 word1 和 word2 。如果兩個(gè)數(shù)組表示的字符串相同,返回 true ;否則,返回 false 。
數(shù)組表示的字符串 是由數(shù)組中的所有元素 按順序 連接形成的字符串。
示例 1:
輸入:word1 = [“ab”, “c”], word2 = [“a”, “bc”]
輸出:true
解釋:
word1 表示的字符串為 “ab” + “c” -> “abc”
word2 表示的字符串為 “a” + “bc” -> “abc”
兩個(gè)字符串相同,返回 true
具有給定數(shù)值的最小字符串
小寫(xiě)字符 的 數(shù)值 是它在字母表中的位置(從 1 開(kāi)始),因此 a 的數(shù)值為 1 ,b 的數(shù)值為 2 ,c 的數(shù)值為 3 ,以此類(lèi)推。
字符串由若干小寫(xiě)字符組成,字符串的數(shù)值 為各字符的數(shù)值之和。例如,字符串 “abe” 的數(shù)值等于 1 + 2 + 5 = 8 。
給你兩個(gè)整數(shù) n 和 k 。返回 長(zhǎng)度 等于 n 且 數(shù)值 等于 k 的 字典序最小 的字符串。
注意,如果字符串 x 在字典排序中位于 y 之前,就認(rèn)為 x 字典序比 y 小,有以下兩種情況:
x 是 y 的一個(gè)前綴;
如果 i 是 x[i] != y[i] 的第一個(gè)位置,且 x[i] 在字母表中的位置比 y[i] 靠前。
示例 1:
輸入:n = 3, k = 27
輸出:“aay”
解釋:字符串的數(shù)值為 1 + 1 + 25 = 27,它是數(shù)值滿(mǎn)足要求且長(zhǎng)度等于 3 字典序最小的字符串。
生成平衡數(shù)組的方案數(shù)
給你一個(gè)整數(shù)數(shù)組 nums 。你需要選擇 恰好 一個(gè)下標(biāo)(下標(biāo)從 0 開(kāi)始)并刪除對(duì)應(yīng)的元素。請(qǐng)注意剩下元素的下標(biāo)可能會(huì)因?yàn)閯h除操作而發(fā)生改變。
比方說(shuō),如果 nums = [6,1,7,4,1] ,那么:
選擇刪除下標(biāo) 1 ,剩下的數(shù)組為 nums = [6,7,4,1] 。
選擇刪除下標(biāo) 2 ,剩下的數(shù)組為 nums = [6,1,4,1] 。
選擇刪除下標(biāo) 4 ,剩下的數(shù)組為 nums = [6,1,7,4] 。
如果一個(gè)數(shù)組滿(mǎn)足奇數(shù)下標(biāo)元素的和與偶數(shù)下標(biāo)元素的和相等,該數(shù)組就是一個(gè) 平衡數(shù)組 。
請(qǐng)你返回刪除操作后,剩下的數(shù)組 nums 是 平衡數(shù)組 的 方案數(shù) 。
示例 1:
輸入:nums = [2,1,6,4]
輸出:1
解釋:
刪除下標(biāo) 0 :[1,6,4] -> 偶數(shù)元素下標(biāo)為:1 + 4 = 5 。奇數(shù)元素下標(biāo)為:6 。不平衡。
刪除下標(biāo) 1 :[2,6,4] -> 偶數(shù)元素下標(biāo)為:2 + 4 = 6 。奇數(shù)元素下標(biāo)為:6 。平衡。
刪除下標(biāo) 2 :[2,1,4] -> 偶數(shù)元素下標(biāo)為:2 + 4 = 6 。奇數(shù)元素下標(biāo)為:1 。不平衡。
刪除下標(biāo) 3 :[2,1,6] -> 偶數(shù)元素下標(biāo)為:2 + 6 = 8 。奇數(shù)元素下標(biāo)為:1 。不平衡。
只有一種讓剩余數(shù)組成為平衡數(shù)組的方案。
總結(jié)
- 上一篇: matlab调用system,求助 sy
- 下一篇: mybatis 查询之神坑