讨论/题目交流/🏆 第 161 场力扣周赛/
🏆 第 161 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

4 分 - 交换字符使得字符串相同
4 分 - 统计「优美子数组」
5 分 - 移除无效的括号
6 分 - 检查「好数组」

展开讨论

第一次参加周赛,萌新一个 只写完了第一个
思路:因为不是x就是y,而且只需要返回次数就可以,所以只要找到两个字符串不同的地方,提取出来(只需要从s1提取一个就可以,s2与其相反),比如示例4提取出来就是xyxyyx,首先判断它是否为偶数,只有是偶数才能进行交换操作,之后就是统计次数,两个x或y需要一次,一个x和一个y需要两次,所以上面的例子,一个3个x和3个y,所以分为2x、2y、1x1y,需要1+1+2=4次
代码如下:
class Solution:
def minimumSwap(self, s1: str, s2: str) -> int:
if len(s1) != len(s2):
return -1
s3 = ''
for loc in range(0, len(s1)):
if s1[loc] == s2[loc]:
continue
else:
s3 += s1[loc]
l3 = len(s3)
if l3 % 2:
return -1
else:
sum = s3.count('x')//2 + s3.count('y')//2
if l3 == sum*2:
return sum
return sum + 2

展开全部 25 讨论