python-双胞胎字符串

[问题描述] :给定两个字符串s和t,每次可以任意交换s的奇数位和偶数位的字符,即奇数位的字符可以与任意其它奇数位的字符交换,偶数位的字符同样也可以与任意偶数位的字符的字符交换,问能否在有限的次数的交换下使s变为t?
[问题示例]:输入s="abcd",t="cdab",输出"Yes",第一次a与c交换,第二次b与d交换;s输入s="abcd",t="bcda",输出"No",无论如何交换,始终无法将s="abcd"变为s=t="bcda"。

++完整代码如下:++

a=input()

b=input()

c=[]

if len(a)!=len(b):

print("No")

else:

for m in range(0,len(a),2):

for n in range(0,len(b),2):

if a[0]==b[0+m] and a[1]==b[1+n]:

c.append(1)

else:

c.append(0)

if 1 in c:

print("Yes")

else:

print("No")

++代码解释:++

"a=input()

b=input() ",让用户输入两个字符串。

"if len(a)!=len(b):

print("No") ",判断用户输入的两个字符串长度是否相同(字符数是否相同),如果不相同,则输出"No"。

"else:

for m in range(0,len(a),2):

for n in range(0,len(b),2):

if a[0]==b[0+m] and a[1]==b[1+n]:

c.append(1)

else:

c.append(0) ",如果相同,则循环得到s所有按规则调换得到的结果,并分别判断其是否与t相同,如果相同,则在列表c中添加一个1,如果不相同则在列表c中添加一个0。

"if 1 in c:

print("Yes")

else:

print("No") ",循环结束后,判断列表c中是否有1(1等效于s经调换得到t的结果),如果有,则打印"Yes",否则打印"No"。

(注释:++s,t的字符串长度必须为偶数++ ,
if 1 in c:
print("Yes")
else:
print("No")

这个方法非常重要,即循环过程中我虽然不知道我所需要的结果会出现在哪一次循环中,但只要我将所有存入列表中,一但我在列表中查询到我所需要的结果,即可判定存在这种结果,该方法适用于在未知数量的结果中查询是否存在所求结果。)

++运行效果展示:++

++(声明:以上内容均为原创)++

相关推荐
mit6.8242 小时前
Xai架构
算法
WBluuue3 小时前
Codeforces 1078 Div2(ABCDEF1)
c++·算法
geovindu3 小时前
python: Memento Pattern
开发语言·python·设计模式·备忘录模式
寻星探路3 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
lbb 小魔仙3 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
岱宗夫up3 小时前
FastAPI入门(上篇):快速构建高性能Python Web API
开发语言·前端·python·fastapi
Dxy12393102163 小时前
中文乱码恢复方案
开发语言·python
田里的水稻3 小时前
FA_融合和滤波(FF)-联邦滤波(FKF)
人工智能·算法·数学建模·机器人·自动驾驶
紫陌涵光4 小时前
112. 路径总和
java·前端·算法
回敲代码的猴子4 小时前
2月8日上机
开发语言·c++·算法