Coding 【每日一题】双胞胎字符串 -Python-20211005

Jack · 2021年10月05日 · 最后由 Jack 回复于 2021年10月06日 · 14 次阅读
本帖已被设为精华帖!
  1. 问题描述: 给定两个字符串 s 和 t,每次可以任意交换 s 的奇数位或偶数位上的字符,问能否经过若干次交换,使 s 变成 t
  2. 问题示例: s = "abcd" t = "cdab" 输出: "YES"

s = "abcd" t = "bcda" 输出: "NO"

Jack 将本帖设为了精华贴 10月05日 17:38

参考代码:

class Solution:
    def isTwin(self, s, t):
        if len(s) != len(t):
            return "NO"
        oddS = []
        evenS = []
        oddT = []
        evenT = []
        for i in  range(len(s)):
            if i & 1:
                oddS.append(s[i])
                oddT.append(t[i])
            else:
                evenS.append(s[i])
                evenT.append(t[i])
        oddS.sort()
        oddT.sort()
        evenS.sort()
        evenT.sort()
        for i in range(len(oddS)):
            if oddS[i] != oddT[i]:
                return "NO"
        for i in range(len(evenS)):
            if evenS[i] != evenT[i]:
                return "NO"
        return "YES"
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册