先计算出‘S’和‘T’分别含有的字母和数量,用Counter来计算就好,遍历S中的字母的key和value,如果字母在T中没含有,那么就说明T中需要改变某些字母来满足这个S中的字母,具体数量就是这个字母key对应的value。如果含有,那么如果这个字母在T中数量和S中一样,不用操作,如果在T中数量<S中的数量,那么T中还需要字母改变来满足对应key在S中的数量,这个数量就是两个字母key在S和T中数量的差值。如果其在T中多过在S中的数量,那么多出来的部分会被之前的改变的操作占用掉,我们不用操作。
class Solution:
def minSteps(self, s: str, t: str) -> int:
Cnts = collections.Counter(s)
Cntt = collections.Counter(t)
#print(Cnts)
#print(Cntt)
res = 0
for key,value in Cnts.items():
if key not in Cntt:
res += value
else:
if value > Cntt[key]:
res += value - Cntt[key]
return res