力扣 K 次操作轉變字串

2021-10-13 15:33:32 字數 1264 閱讀 2081

給你兩個字串 s 和 t ,你的目標是在 k 次操作以內把字串 s 轉變成 t 。

第 i 次操作時(1 <= i <= k),你可以選擇進行如下操作:

切換 1 次字元的意思是用字母表中該字母的下乙個字母替換它(字母表環狀接起來,所以 『z』 切換後會變成 『a』)。

請記住任意乙個下標 j 最多只能被操作 1 次 。

如果在不超過 k 次操作內可以把字串 s 轉變成 t ,那麼請你返回 true ,否則請你返回 false 。

力扣:1540. k 次操作轉變字串

輸入:s = 「input」, t = 「ouput」, k = 9

輸出:true

解釋:第 6 次操作時,我們將 『i』 切換 6 次得到 『o』 。第 7 次操作時,我們將 『n』 切換 7 次得到 『u』 。

題目比較長,文字遊戲,但還是很好理解的。

1、首先,由於每次操作只是切換字元,不改變字串的長度,即如果兩個字串的長度不一致,直接返回 false 。

2、根據題目字母表環狀接起來,即如果 s 和 t 在某下標位置的字元不相同,所需最小切換次數最多為 25 。

3、如果有兩個下標的最小切換次數相同均為 i ,第乙個下標可在第 i 次操作時進行切換,第二個下標需要等到 i + 26 次操作時進行切換,

4、同理如果有 n 個下標的最小切換次數相同時,滿足 i + 26 * ( n - 1 ) 其中 n >= 2 ;那麼此時,如果有 i + 26 * (n - 1) > k 則說明至少存在乙個字元不能完成切換,返回 false ;反之,如果對於所有的最小切換次數,所有的下標都可以在 k 次操作以內進行切換,則返回 true 。

ac**

class

solution

int[

] counts =

newint[26

];int length = s.

length()

;// 記錄需要切換相應次數的 索引個數

for(

int i =

0; i < length; i++

) counts[difference]++;

}for

(int i =

1; i <

26; i++)}

return

true;}

}

1540 K 次操作轉變字串

題目描述 給你兩個字串 s 和 t 你的目標是在 k 次操作以內把字串 s 轉變成 t 在第 i 次操作時 1 i k 你可以選擇進行如下操作 選擇字串 s 中滿足 1 j s.length 且之前未被選過的任意下標 j 下標從 1 開始 並將此位置的字元切換 i 次。不進行任何操作。切換 1 次字...

力扣 字串解碼

給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...

反轉字串 力扣

均來自於力扣 題目 反轉字串 o 1 原地反轉 第一思路 1 使用棧,先讓陣列進行輸入 2 top出棧,逆序彈出 python3 棧如何設定?如何輸入?如何輸出?def reverself self,s list int none 輸入 迴圈 進入棧 i 1 彈出棧第二思路 python3 雙指標 ...