大佬教程收集整理的这篇文章主要介绍了交换字符串中的单词(面试问题),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一个没有解决方案的面试问题,我找不到满足内存和运行时要求的解决方案。
给定一个字符串,其中包含 2 个没有空格的单词和一个参数,即第一个单词的长度。您的目标是原地交换这两个词。
示例:swap_words("stackoverflow",5) >> "overflowstack"
时间复杂度:O(N),内存复杂度:O(1)
我设法使用递归来解决它: 首先我将较短的单词移到它的位置,然后用较长的单词重复这个过程。
swap_words("stackoverflow ",5)
stackoverflow >> rflowovestack
swap_words("rflowove",3) # 13-5-5
rflowove >> oveowrfl ### ove-owrfl-stack
swap_words("owrfl",2) # 8-3-3
owrfl >> flrow ### ove-flr-owstack
swap_words("flr",1) # 5-2-2
flr >> rlf ### overlfowstack
这里的调用栈显然不是O(1)内存。
我在某处看到的另一个解决方案是镜像整个字符串,然后分别镜像每个单词:
stackoverflow >> wolfrevokcats
wolfrevo--kcats >> overflow--stack
我认为这要好得多,但我不确定如何在不使用额外空间的情况下就地交换字符串中的字符。我正在用 Python 编写,据我所知,字符串是不可变的。 所以我唯一能想到的就是将字符串转换为字符列表进行交换并从中创建一个新字符串。
那么我在这里错过了什么?在这些要求下,是否有针对该问题的解决方案?
我认为最有效的方法是像这样对字符串进行切片:
def swap_words(word,n):
return word[n:] + word[:n]
以上是大佬教程为你收集整理的交换字符串中的单词(面试问题)全部内容,希望文章能够帮你解决交换字符串中的单词(面试问题)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。