以下是一个不使用额外缓冲区的解决方法,该方法使用双重循环来删除字符串中的重复字符。
def remove_duplicates(string):
if string is None:
return None
length = len(string)
if length < 2:
return string
tail = 1
for i in range(1, length):
for j in range(0, tail):
if string[i] == string[j]:
break
else:
string[tail] = string[i]
tail += 1
return string[:tail]
# 测试
print(remove_duplicates("hello")) # 输出 "helo"
print(remove_duplicates("world")) # 输出 "world"
这个方法的思路是,将字符串中的第一个字符保留,然后从第二个字符开始遍历,与前面的已保留字符逐一比较,如果有重复的字符,则跳过,如果没有,则将该字符保留下来。最后返回保留字符的子串。