Python. Простые алгоритмы
- Python. Простые алгоритмы
- Просмотров: 864
20. Строки. Найти символы, которые встречаются ровно один раз
st ="12345abcdefgh114895defgh"
Способ № 1 Использование двойного цикла
k=0
l=''
for i in range (len(st)):
for j in range (len(st)):
if st[i] == st[j] and i != j:
k+=1
if k == 0:
l += st[i]
else:
k =0
print(l)
# 23abc89
Временная сложность: O (n*n)
Способ № 2 Использование функций ord и chr
s=[0]*1000
for x in st:
s[ord(x)]+=1
for i in range (len(s)):
if s[i] == 1:
print(chr(i), end = "")
# 2389abc
Временная сложность: O (n*n1)
где n - длина входной строки,
n1 - длина списка s
Способ № 3 Использование метода count()
m=[]
for x in st:
if x not in m and st.count(x) == 1:
m.append(x)
print("".join(x), end ='')
# 23abc89
Временная сложность: O (n)
Способ № 4 Использование функции lambda()
m = filter(lambda x: st.count(x) == 1, st)
print(''.join(set(m)))
#89ac3b2
Временная сложность: O (n)
Способ № 5 Использование словаря и множества
d={x: st.count(x) for x in sorted(set(st))} # создаем словарь
# проходим по словарю и определяем ключ значения ==1
for x in d:
if d[x] == 1:
print(x, end = '')
# 2389abc
Временная сложность: O (n)