没有参加这次的笔试,因为不敢。 按照上面的题目理解,我也尝试给出一个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)) ```
点赞 评论

相关推荐

明明就不饿:看不懂你到底会啥,什么岗位
点赞 评论 收藏
分享
03-23 15:00
已编辑
厦门大学 Java
xiaowl:你这个简历的问题是对于技术点、项目的描述,都是描述action的,对于面试官而言,仅能知道你干了什么,无法判断你为什么这么干,干的好不好。
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务