1
.问题描述
给定两个字符串
s
和
t
,每次可以任意交换
s
的奇数位或偶数位上的字
符,即奇数位上的字符能与其他奇数位的字符互换,偶数位上的字符也
能与其他偶数位的字符互换,问能否经过若干次交换,使
s
变成
t
。
2
.问题示例
输入为
s="abcd"
,
t="cdab"
,输出是
"Yes"
,第
1
次
a
与
c
交换,第
2
次
b
与
d
交换。输入
s="abcd"
,
t="bcda"
,输出是
"No"
,无论如何交换,都无
法得到
bcda
。
3
.代码实现
class Solution:
def change(self,str1,str2):
if len(str1) != len(str2):
return "No"
start1 = []
start2 = []
end1 = []
end2 = []
for i in range(len(str1)):
if i & 1:
start1.append(str1[i])
start2.append(str2[i])
else:
end1.append(str1[i])
end2.append(str2[i])
start1.sort()
start2.sort()
end1.sort()
end2.sort()
for i in range(len(start1)):
if start1[i] != start2[i]:
return "No"
for i in range(len(end1)):
if end1[i] != end2[i]:
return "No"
return "Yes"
if __name__ == "__main__":
s = Solution()
str1 = input()
str2 = input()
print(s.change(str1,str2))
4
.运行结果
输入:
abcd
cdab
输出:
Yes
输入:
abcd
bcda
输出:
No