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")

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

++运行效果展示:++

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

相关推荐
树下水月3 分钟前
python 连接hive2 数据库
开发语言·数据库·python
小白宗轩5 分钟前
vsCode的java配置
java·vscode·python
Espresso Macchiato12 分钟前
Leetcode 3748. Count Stable Subarrays
算法·leetcode·职场和发展·leetcode hard·leetcode 3748·leetcode周赛476·区间求和
大袁同学16 分钟前
【哈希hash】:程序的“魔法索引”,实现数据瞬移
数据结构·c++·算法·哈希算法·散列表
一水鉴天30 分钟前
整体设计 全面梳理复盘 之39 生态工具链 到顶级表征及其完全公理化
大数据·人工智能·算法
Moonbit30 分钟前
入围名单公布|2025 MGPIC 决赛即将拉开帷幕!
后端·算法
xuehaisj38 分钟前
如何使用yolo11-C3k2-MambaOut-UniRepLK模型实现历史文化名城Filarmoniya建筑检测识别
python
FreeCode1 小时前
使用LangSmith评估智能体
python·langchain·agent
2501_941112611 小时前
C++与Docker集成开发
开发语言·c++·算法
智者知已应修善业1 小时前
【51单片机:两边向中间流水:即两边先点亮然后熄灭,次边的点亮再熄灭,直到最中间的两个点亮再熄灭,然后重复动作。】2023-3-4
c语言·c++·经验分享·笔记·嵌入式硬件·算法·51单片机