對於這個問題,最暴力的求解方法是採用遍歷的操作,然後全部進行,以下方法使用了一個輔助類,其原理是一個智能容器,當插入元素的時候判斷集合中是否已經有了該元素,沒有就添加,有的話就刪除,如下
#!/usr/bin/python
def findSingle(ls):
con = Container()
for i in range(len(ls)):
con.add(ls[i])
con.showResult()
class Container:
def __init__(self):
self.data = []
self.count = 0
def add(self,dat):
if self.count > 0:
flag = False
index = 0
for i in range(self.count):
if self.data[i] == dat:
flag = True
index = i
break
if flag:
del self.data[index]
self.count = self.count - 1
else:
self.data.append(dat)
self.count=self.count + 1
elif self.count == 0:
self.data.append(dat)
self.count = self.count + 1
def showResult(self):
for i in range(len(self.data)):
print self.data[i]
if __name__=="__main__":
ts = [1,2,1,2,3,4,3]
findSingle(ts)
當時我就拿着這個算法給面試官看,面試官不是很滿意,後來回來查詢了一下,有個比較簡單的辦法,那就是採用異或操作
#!/usr/bin/python
def findSingle(lt):
l = len(lt)
ret = 0
for i in range(l):
ret^=int(lt[i])
return ret
if __name__=="__main__":
ts = "12123447887"
print findSingle(ts)