首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符串交换单词(面试问题)

用字符串交换单词(面试问题)
EN

Stack Overflow用户
提问于 2021-04-28 10:15:03
回答 1查看 104关注 0票数 1

我遇到了一个没有解决方案的面试问题,我找不到满足内存和运行时要求的解决方案。

给你一个没有空格的两个字的字符串和一个参数,这个参数是第一个单词的长度。你的目标是在适当的地方交换两个单词。

示例:swap_words(“堆栈溢出”,5) >>“溢出堆栈”

时间复杂度: O(N),内存复杂度: O(1)

我设法用递归来解决这个问题:首先,我将较短的单词移到它的位置,然后用较长的单词重复这个过程。

代码语言:javascript
复制
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)内存。

我在某个地方看到的另一个解决方案是镜像整个字符串,然后分别镜像每个单词:

代码语言:javascript
复制
stackoverflow >> wolfrevokcats
wolfrevo--kcats >> overflow--stack

在我看来,这要好得多,但我不知道如何在不使用额外空格的情况下在字符串中交换字符。我是用Python编写的,据我所知,字符串是不可变的。因此,我唯一能想到的就是将字符串转换为一个字符列表,然后进行交换,并从中创建一个新的字符串。

我在这里错过了什么?在这些要求下,是否有解决这个问题的办法?

EN

回答 1

Stack Overflow用户

发布于 2021-04-28 10:19:52

在我看来,最有效的方法是像这样分割字符串:

代码语言:javascript
复制
def swap_words(word, n):
    return word[n:] + word[:n]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67298252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档