我在很多采访中发现了以下问题(不是我的采访)。
给定一个字符串,您需要将每个空格替换为2个空格。 您可能会假设您的字符串具有足够的位置来添加所需的空格。 您需要就地执行此操作,不允许分配内存。
我不明白如何在没有覆盖字母的情况下实现这一目标。
答案 0 :(得分:0)
您的问题中没有很多上下文。假设这是一次编程面试,并且您正在使用C或汇编语言之类的低级语言。我们还假设该字符串具有计数和/或以null结尾,例如“这是一个字符串\ 0 \ 0 \ 0 \ 0”
我将从头到尾扫描字符串并计算空格,我们称其为C。然后我将在字符上的字符串上向后移动,一次将每个字符向前移动C个位置。每次遇到空格时,将空格向前复制C个位置,从C中减去一个,然后再将空格移动C个位置。当C为0时停止。
此处,空值/未使用的值用句点表示。
c(v1,v2)
答案 1 :(得分:0)
在找到的空格后移动字符串需要一个字母。为了减少减少变速部件所需的时间,我将使用以下方法:
c
。c
开始直到字符串末尾的循环:
s
c
+ s
s
并在位置-c
+ 1上添加一个空格不确定所有偏移量是否在我心中正确计算,请在需要时进行更正。但是,因为这只是面试中的一个问题,所以要构思一个正确的算法。