給你兩個字串 s 和 t ,你的目標是在 k 次操作以內把字串 s 轉變成 t 。
在第 i 次操作時(1 <= i <= k),你可以選擇進行如下操作:
選擇字串 s 中滿足 1 <= j <= s.length 且之前未被選過的任意下標 j (下標從 1 開始),並將此位置的字元切換 i 次。
不進行任何操作。
切換 1 次字元的意思是用字母表中該字母的下乙個字母替換它(字母表環狀接起來,所以 'z' 切換後會變成 'a')。
請記住任意乙個下標 j 最多只能被操作 1 次。
如果在不超過 k 次操作內可以把字串 s 轉變成 t ,那麼請你返回 true ,否則請你返回 false 。
示例 1:
輸入:s = "input", t = "ouput", k = 9
輸出:true
解釋:第 6 次操作時,我們將 'i' 切換 6 次得到 'o' 。第 7 次操作時,我們將 'n' 切換 7 次得到 'u' 。
示例 2:
輸入:s = "abc", t = "bcd", k = 10
輸出:false
解釋:我們需要將每個字元切換 1 次才能得到 t 。我們可以在第 1 次操作時將 'a' 切換成 'b' ,但另外 2 個字母在剩餘操作中無法再轉變為 t 中對應字母。
示例 3:
輸入:s = "aab", t = "bbb", k = 27
輸出:true
解釋:第 1 次操作時,我們將第乙個 'a' 切換 1 次得到 'b' 。在第 27 次操作時,我們將第二個字母 'a' 切換 27 次得到 'b' 。
1 <= s.length, t.length <= 10^5
0 <= k <= 10^9
s 和 t 只包含小寫英文本母。
class solution else
if(idx > k) return false;
else changes[idx] = true;
}return true;
}};
Leetcode1005K 次取反後最大化的陣列和
思路 使總和最大,最大應該是再需要操作的次數k條件下 負數變為正數符號不變。負數數目n neg 正數數目n pos。負數提取形成乙個序列s1 正數乙個序列 正數序列求和s2 k a 負數從小到大排序,排在前面絕對值反而大 s1 前k個絕對值求和 k 1 最後 直接求和 k a 負數序列取絕對值求和s...
Leetcode 最小K個數
思路 基於快排改進 選取arr 0 作為基準值,tmp arr 0 排序後,返回tmp的下標index 此時,arr index 左側的值都小於tmp,右側的值都大於tmp。如果k index,那麼從起始點0到下標index 1的值就為最小的k個數,如果k index,說明k個數在區間 0,inde...
出現k次與出現1次
問題描述 陣列中只有乙個數出現了1次,其他的數都出現了k次,請輸出只出現1次的數。解題思路 陣列a中,除了某乙個數字x之外,其他數字都出現了三次,而x出現了一次。請給出最快的方法找到x。應該如何思考呢?如果是兩個相同的就可以利用兩個相同的數異或結果為0來計算的,但這個題目中其他數字是出現了3次,因此...