面试题答案
一键面试方法一:使用replace方法
s = 'abcdefghijklmnopqrstuvwxyz'
new_s = s.replace('def', '')
print(new_s)
说明:replace
方法会遍历整个字符串,将指定子串替换为空字符串。它的实现相对简单直接。
方法二:使用切片
s = 'abcdefghijklmnopqrstuvwxyz'
index = s.find('def')
if index != -1:
new_s = s[:index] + s[index+3:]
print(new_s)
说明:先通过find
方法找到子串位置,然后利用切片将子串前后部分拼接起来,达到删除子串的目的。
性能差异
replace
方法:由于它需要遍历整个字符串来查找和替换,时间复杂度为$O(n)$,其中$n$是字符串的长度。如果字符串非常长且子串出现频率高,该方法性能尚可,但如果只需要删除单个子串,相对切片方法可能会做一些不必要的遍历。- 切片方法:首先使用
find
查找子串,时间复杂度也是$O(n)$,但如果确定只删除单个子串,在拼接时,其操作相对replace
更有针对性,对于这种只删除一次子串的场景,可能性能略好于replace
方法。但如果子串出现频率高,切片方法每次都要查找位置再拼接,效率会低于replace
方法。