Python中如何将字符串格式化为与另一字符串空格分布一致?
高效实现字符串按模板插入空格的方法
核心思路是直接以带空格的模板字符串(foo)为遍历基准,同步读取目标字符串(abc)的字符:遇到模板里的空格就直接保留,否则取目标字符串的下一个字符拼接结果,完全不用处理插入空格后的位置偏移问题,逻辑简单且效率拉满。
具体实现(Python)
def func(target_str, template_str): # 把目标字符串转成迭代器,方便逐个取字符 target_iter = iter(target_str) result = [] # 遍历模板的每个字符 for char in template_str: if char == ' ': result.append(' ') else: # 取目标字符串的下一个字符 result.append(next(target_iter)) return ''.join(result)
测试验证
foo = "foofoo foo fo o" abc = "abcabcabcabc" print(func(abc, foo)) # 输出: abcabc abc ab c
为什么这个方法高效?
- 时间复杂度是O(m),m是模板字符串的长度,只需要遍历一遍模板就能完成,属于线性时间操作,是理论上的最优效率。
- 用列表收集结果,避免了字符串频繁拼接带来的性能损耗(Python中字符串是不可变对象,每次拼接都会生成新字符串,而列表的
append操作是均摊O(1)的)。 - 逻辑直观,不需要提前计算所有空格位置再处理偏移,不容易出错。
这个方法的前提是:模板字符串(foo)去掉空格后的字符数量,等于目标字符串(abc)的总长度,这也是题目里“两个长度相同的字符串”的实际含义。
内容的提问来源于stack exchange,提问作者Gaelink
相关产品推荐
相关产品推荐

