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 a0==b0+m and a1==b1+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 a0==b0+m and a1==b1+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")

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

++运行效果展示:++

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

相关推荐
总裁余(余登武)13 小时前
python多个py文件打包【解决exe不能移动运行bug】
python
卡提西亚13 小时前
leetcode-1438. 绝对差不超过限制的最长连续子数组
算法·leetcode·职场和发展
Java面试题总结13 小时前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
kisloy13 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
从零开始的代码生活_14 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
xywww16814 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
yuannl1014 小时前
图的存储方式
数据结构
泷寂14 小时前
最小生成树 (MST基础)
算法
Daniel_12314 小时前
数组——总结篇
算法
不懒不懒15 小时前
【针对路面识别数据集,结合三轴加速度标准化数据及多路面识别需求,以下是算法选择与处理方案】
算法