/
Вопросы и ответы
/
Python
/

Как сделать проверку на одинаковые символы в строке python

Как сделать проверку на одинаковые символы в строке python

5 лет назад

Человек-Молекула

Ответы

0

Чтобы проверить есть ли в строке повторяющиесся символы можно, например, обойти строку, складывая встречающиеся символы в множество (set) и проверять, положили ли мы его раньше

1
2
3
4
5
6
7
8
9
text = 'Foobaar'
seen = set()
for ch in text:
    if ch in seen:
        print('Was seen before!')
        break
    else:
        seen.add(ch)
# Was seen before!

4 года назад

Ivan Mamtsev

0

Есть ли в строке повторяющиеся символы, проще всего проверить через множество: в set попадают только уникальные символы. Если длина множества меньше длины строки, повторы есть:

1
2
3
4
5
def has_duplicates(text):
    return len(set(text)) < len(text)

print(has_duplicates("python"))  # => False
print(has_duplicates("hello"))   # => True

Состоит ли строка из одного символа

1
2
3
4
5
def all_same(text):
    return len(set(text)) <= 1

print(all_same("aaaa"))  # => True
print(all_same("aaba"))  # => False

Какие символы повторяются и сколько раз

1
2
3
4
from collections import Counter

counts = Counter("programming")
print({ch: n for ch, n in counts.items() if n > 1})  # => {'r': 2, 'g': 2, 'm': 2}

Первый повторяющийся символ

1
2
3
4
5
6
7
8
9
def first_duplicate(text):
    seen = set()
    for ch in text:
        if ch in seen:
            return ch
        seen.add(ch)
    return None

print(first_duplicate("abcdeb"))  # => b

Без учёта регистра и пробелов

1
2
3
text = "Мама мыла"
clean = text.lower().replace(" ", "")
print(has_duplicates(clean))  # => True

Одинаковые символы подряд

1
2
3
4
import re

print(bool(re.search(r"(.)\1", "hello")))  # => True — две «l» подряд
print(bool(re.search(r"(.)\1", "abcab")))  # => False

(.)\1 ищет любой символ, за которым сразу идёт он же.

Строки и множества разбирают в бесплатном курсе «Основы Python».

8 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845