信誉好的永州网站建设,静态网站的短处,腾讯推广平台,凡科在线制作网站[问题描述]#xff1a;给定两个字符串s和t#xff0c;每次可以任意交换s的奇数位和偶数位的字符#xff0c;即奇数位的字符可以与任意其它奇数位的字符交换#xff0c;偶数位的字符同样也可以与任意偶数位的字符的字符交换#xff0c;问能否在有限的次数的交换下使s变为t?…[问题描述]给定两个字符串s和t每次可以任意交换s的奇数位和偶数位的字符即奇数位的字符可以与任意其它奇数位的字符交换偶数位的字符同样也可以与任意偶数位的字符的字符交换问能否在有限的次数的交换下使s变为t?[问题示例]:输入s”abcd“,t”cdab”,输出”Yes“,第一次a与c交换第二次b与d交换;s输入s”abcd”,t”bcda”,输出”No“无论如何交换始终无法将s”abcd”变为st”bcda”。
完整代码如下 ainput() binput() 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[0m] and a[1]b[1n]: c.append(1) else: c.append(0) if 1 in c: print(Yes) else: print(No)
代码解释 “ainput() binput() ”让用户输入两个字符串。 “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[0m] and a[1]b[1n]: c.append(1) else: c.append(0) ”如果相同则循环得到s所有按规则调换得到的结果并分别判断其是否与t相同如果相同则在列表c中添加一个1如果不相同则在列表c中添加一个0。 “if 1 in c: print(Yes) else: print(No) ”循环结束后判断列表c中是否有11等效于s经调换得到t的结果如果有则打印“Yes”否则打印“No”。 注释st的字符串长度必须为偶数if 1 in c: print(Yes) else: print(No) 这个方法非常重要即循环过程中我虽然不知道我所需要的结果会出现在哪一次循环中但只要我将所有存入列表中一但我在列表中查询到我所需要的结果即可判定存在这种结果该方法适用于在未知数量的结果中查询是否存在所求结果。)
运行效果展示 声明以上内容均为原创