Leetcode 5469 K次操作轉變字串

2021-10-08 23:12:17 字數 1039 閱讀 1765

給你兩個字串 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次,因此...