1540 K 次操作轉變字串

2021-10-10 17:27:55 字數 1206 閱讀 2251

題目描述:給你兩個字串 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 。

解題思路:一開始沒有注意到每個小標只能被操作一次,這樣題目會更難。如果只能操作一次,首先我們遍歷s字串,算出切換到t字串對應字元需要的切換次數(前提是t和s字串長度相等),切換次數一定在0-25之間,因為每個字串只能操作一次,對切換次數為i的多個字元,後面的字元的切換次數都要在前乙個字元上加26,遍歷所有的切換次數,如果完成切換的最大次數都小於k,則返回true,反之則返回false,**如下:

class

solution

:def

canconvertstring

(self, s:

str, t:

str, k:

int)

->

bool

: size =

len(s)

if size !=

len(t)

:return

false

from collections import defaultdict

counts = defaultdict(

int)

for i, c in

enumerate

(s):

change =

(ord

(t[i])-

ord(c))%

26if change:

counts[change]+=1

for change, c in counts.items():

if(c-1)

*26+ change > k:

return

false

return

true

力扣 K 次操作轉變字串

給你兩個字串 s 和 t 你的目標是在 k 次操作以內把字串 s 轉變成 t 在第 i 次操作時 1 i k 你可以選擇進行如下操作 切換 1 次字元的意思是用字母表中該字母的下乙個字母替換它 字母表環狀接起來,所以 z 切換後會變成 a 請記住任意乙個下標 j 最多只能被操作 1 次 如果在不超過...

Leetcode 5469 K次操作轉變字串

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

轉變字串

各位大佬,有空麻煩看一下,最好給個詳細解答,我不勝感激。現有乙個字串 存放在陣列裡,不以0結束,而是用乙個整型變數記錄陣列中資料的個數 掃瞄這個字串,遇到值是0x7e 0x7d和ascii碼中的控制字元 值小於0x20 須將該字元前插入乙個字元0x7d,同時將這個字元變成該字元和0x20按位異或後得...