没有参加这次的笔试,因为不敢。 按照上面的题目理解,我也尝试给出一个Solution。 基本思路: 1. s1元素的最后元素在s2中找到对应位置; 2. 在s2对应位置后面的元素; 3. 在s1的这个元素被选中,转移到s1的末尾; 4. 直到s1和s2完全相同,则输出移动的步数。 另外,我觉得很多时候要提前想Testcase;如果在线编程测试时,哪些没有通过的例子能显示出来就好了——就想LeetCode的环境,我觉得难度会降不少。 show the code ``` def moves(sa, sb): steps = 0 if len(sa)!=len(sb) or set(sa)!=set(sb): return 0 # impossible else: sa = list(sa) sb = list(sb) while sa!=sb: try: moveC = sb[sb.index(sa[-1])+1] except IndexError: moveC = sa[0] sa.remove(moveC) sa.append(moveC) steps += 1 return steps if __name__ == "__main__": s1 = 'aac' s2 = 'caa' print(moves(s1, s2)) ```
点赞 评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
牛客网
牛客企业服务