Problem: Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer NOTE: One or two additional variables are fine. An extra copy of the array is not FOLLOW UP Write the test cases for this method
先使用qsort快速排序对字符串进行排序,然后再扫描一遍字符串,将前后相邻且相同的字符去掉。时间复杂度O(nlogn + n)。因为使用的python写的,不能在原来的字符串上进行修改,所以使用了额外空间,如果使用C++或者C就可以在原来的字符串上进行修改,不用使用额外空间。
#!/usr/bin/python
# coding:utf-8
def deleteDuplicate(str):
str_list = list(str)
str_list.sort()
i = 0
newStr = str_list[i]
while i < len(str_list)-1:
if str_list[i] != str_list[i+1]:
newStr += str_list[i+1]
i = i+1
return newStr
if __name__ == '__main__':
str = ''
str = raw_input("input string:")
print deleteDuplicate(str)