Как найти повторяющиеся символы в строке python
Перейти к содержимому

Как найти повторяющиеся символы в строке python

  • автор:

Как проверить есть ли в слове повторяющиеся буквы?

Пользователь вводит слово. Программа должна проверить, есть ли в строке одинаковые буквы и посчитать сколько раз они встречаются. Использовать массивы, модули, листы и словари нельзя. Только цикл, только строки.

word = str(input('Введіть слово: ')) count = 0 while count  

Пробовала что-то такое, но результат неверный, подсчитывает только кол-во символов.
Отслеживать
51.6k 204 204 золотых знака 67 67 серебряных знаков 251 251 бронзовый знак
задан 8 окт 2020 в 19:02
31 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака

я бы вашего препода за такое задание в колхоз на картошку отправил! Для задачи на циклы можно было придумать гораздо более элегантную задачу. А так студенты начнут думать, что так и надо писать программы ¯_ಠ_ಠ_/¯

8 окт 2020 в 19:07
вы уверены, что словари использовать нельзя?
8 окт 2020 в 19:10

согласна с вами. программа легко решается с помощью массива, а как решить эту я не знаю. запрет на использование словарей и всего остального - это одно из главных условий

8 окт 2020 в 19:12
множества set() - тоже нельзя использовать?
8 окт 2020 в 19:13
множества нельзя 🙂
8 окт 2020 в 19:14

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Только цикл, только строки:

word = "гиппопотам" seen = "" for c in word: if c not in seen: print(f": ") seen += c 
г: 1 и: 1 п: 3 о: 2 т: 1 а: 1 м: 1 

Отслеживать
ответ дан 8 окт 2020 в 19:18
MaxU - stand with Ukraine MaxU - stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 133 133 бронзовых знака
большое спасибо, но учитывая, что преподователь довольно требовательный, нужен вариант полегче
8 окт 2020 в 19:27
@anastasia, "Не ищите лёгких путей, ищите правильный!" (c) - автора не помню. 😉
8 окт 2020 в 19:29

Если нельзя ни словарей ни массивов, ни сета, тогда я вижу такой вариант - для первой буквы в слове проверять есть ли у нее повторения, если есть, то вывести сколько их, затем удалить все вхождения этой буквы и продолжать до тех пор пока строка не будет пустой.

word = "гиппопотам" while word: if word.count(word[0])>1: # если вывод количества нужен для всех, а не только для повторяющихся, то этот if можно убрать print(word[0], ':', word.count(word[0])) word = word.replace(word[0], '') 

Отслеживать
ответ дан 8 окт 2020 в 19:22
Andrey Maslov Andrey Maslov
2,988 1 1 золотой знак 6 6 серебряных знаков 11 11 бронзовых знаков
говорю, напишите код пожалуйста)
8 окт 2020 в 19:26
добавил код в ответ
8 окт 2020 в 19:30
спасибо большое)
8 окт 2020 в 19:35
немного подправил код, упростил вывод
8 окт 2020 в 19:42

word = input('Введіть слово: ') for i in range(len(word)): if word[i] not in word[:i]: print(word[i], word.count(word[i])) 

Вот второй вариант:

word = input('Введіть слово: ') for i in range(len(word)): if i == word.find(word[i]): print(word[i], word.count(word[i])) 

Поиск повторяющихся символов в строке

Author24 — интернет-сервис помощи студентам

Дан текстовый файл с рандомными значениями, часть символов в них повторяется.
Как сделать, чтобы повторяющиеся символы вывелись в отдельный текстовик?

например строки
lajfjqeh4q49tnjanlfva
ajfrjqeh4q49ieqq4322
4eruhqjqeh4q4jjkjkkk

повторяющийся элемент jqeh4q49, чтобы он был выведен

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Поиск повторяющихся символов в строке S1 и удаление элементов/повторов, описанных в строке S2
Доброго времени суток, есть такой код по заданию нужно: 1.Разработать функцию, которая.

Поиск повторяющихся символов в строке
здравствуйте. помогите написать программу без указателей. дана строка длиной n.(размер строки.

Множества. Поиск не повторяющихся символов в отдельных словах, а не во всей строке
Как сделать что бы не повторяющиеся символы искало в отдельных словах, а не во всей строке type.

Удаление повторяющихся символов в строке
Есть такое задание - напишите функцию, на входе которой приходит строка, состоящая из нескольких.

Автоматизируй это!

Эксперт Python

7107 / 4611 / 1215
Регистрация: 30.03.2015
Сообщений: 13,243
Записей в блоге: 29

newprogr, а сам как думаешь? длина в 2 символа устроит? или какая мимнимальна?
вариант - перебирать наборы символов увеличивая "монитор" и двигая его от начала к середине текста, проверять что таких кусков в тексте больше 1.

Эксперт Python

8219 / 4338 / 1838
Регистрация: 27.03.2020
Сообщений: 7,162
Как вариант.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
def line_comb(st): res = set() n = len(st) for i in range(n): for j in range(i, n): res.add(st[i:j+1]) return res list_line = ['lajfjqeh4q49tnjanlfva', 'ajfrjqeh4q49ieqq4322', '4eruhqjqeh4q4jjkjkkk'] result = line_comb(list_line[0]) for i in range(1, len(list_line)): result &= line_comb(list_line[i]) for w in sorted(list(result), key = len, reverse = True): print(w)

Регистрация: 18.08.2021
Сообщений: 7

Думаю, оптимально вести поиск вначале по одному символу, затем по двум и т.д. Найденные совпадения сохранять в словарь, потом вывести найденный повтор с максимальным количеством символов.

198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 837
Маловато данных. Повторение должно быть во всех строках или в любых 2+?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Удаление повторяющихся символов в строке
Столкнулся с проблемой удаления одинаковых символов в строке, вот сделал 2 алгоритма но обо.

Удаление повторяющихся символов в строке
Здравствуйте. Мне нужна ваша помощь. Я сделал запрос на объединение строк таблицы, у которых.

Количество повторяющихся символов в строке
Всем привет! Прошу помочь с задачей: "Напишите функцию, которая будет возвращать количество.

Удаление повторяющихся символов в строке
Помогите написать регулярку,которая бы из всех повторяющихся символов оставляла один.Повторяющиеся.

Поиск повторяющихся символов
Допустим имеется функция, принимающая два слова, например 'Door', 'Kangaroo', на выходе должно быть.

Поиск повторяющихся символов
Здравствуйте, помогите, пожалуйста, с написанием программы. Я написал программу перевода чисел.

Поиск повторяющихся символов
Задача: Поиск наиболее часто повторяющегося символа в строках PS 2 строки по 80 символов .

Или воспользуйтесь поиском по форуму:

Находим повторяющиеся элементы в списке Python

Находим повторяющиеся элементы в списке Python

Статьи

Автор Admin На чтение 3 мин Просмотров 8.7к. Опубликовано 21.04.2023

Введение

В данной статье разберём три способа нахождения повторяющихся элементов в неупорядоченном списке Python.

Поиск одинаковых элементов в списке с помощью словаря

Для начала создадим неупорядоченный список с числами и пустой словарь:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] duplicate_elements = <>

Теперь пройдёмся по нашему неупорядоченному списку при помощи цикла for. Внутри цикла добавим условие, что если итерабельный элемент присутствует в словаре duplicate_elements, то прибавляем к значению ключа единицу, т.к. этот элемент уже присутствует в словаре, и был найден его дубликат. Если же условие оказалось ложным, то сработает else, где в словарь будет добавляться новый ключ, которого в нём ранее не было:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] duplicate_elements = <> for item in unordered_list: if item in duplicate_elements: duplicate_elements[item] += 1 else: duplicate_elements[item] = 1
unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] duplicate_elements = <> for item in unordered_list: if item in duplicate_elements: duplicate_elements[item] += 1 else: duplicate_elements[item] = 1 print(duplicate_elements) # Вывод:

В выводе мы видим, что было найдено две шестёрки, одна восьмёрка, две семёрки, две пятёрки, одна единица и две четвёрки.

Поиск одинаковых элементов в списке с помощью модуля collections

В данном способе для поиска одинаковых элементов в неупорядоченном списке мы будем использовать модуль collections, а точнее класс Counter из него. Сам модуль входит в стандартную библиотеку Python, поэтому устанавливать его не придётся.

Для начала импортируем сам модуль collections и добавим неупорядоченный список:

import collections unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7]

Далее при помощи класса Counter из модуля collections подсчитаем количество повторяющихся элементов:

import collections unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] count_frequency = collections.Counter(unordered_list)

Выведем результат в виде словаря:

import collections unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] count_frequency = collections.Counter(unordered_list) print(dict(count_frequency)) # Вывод:

Поиск одинаковых элементов в списке с помощью функции filter()

В данном способе мы просто будем выводить повторяющиеся элементы в списке, но не указывать количество их повторений.

При помощи функции filter() отфильтруем наш список. Внутри неё анонимной функцией lambda будем производить проверку поэлементно, и если определённый элемент встречается больше одного раза, мы добавляем его в count_frequency:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list)

При помощи функции set() преобразуем полученные данные в count_frequency в множество, а множество в список:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list) count_frequency = list(set(count_frequency))

Выведем полученный результат:

unordered_list = [6, 6, 8, 7, 5, 1, 4, 5, 4, 7] count_frequency = filter(lambda x: unordered_list.count(x) > 1, unordered_list) count_frequency = list(set(count_frequency)) print(count_frequency) # Вывод: [4, 5, 6, 7]

Т.е. в неупорядоченном списке повторяются четвёрки, пятёрки, шестёрки и семёрки.

Заключение

В ходе статьи мы с Вами разобрали целых три способа нахождения повторяющихся элементов в списке Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! ��

Задача 1. Символы. Напишите программу, которая удаляет из строки все повторяющиеся символы.

Вы можете использовать эту функцию, чтобы удалить повторяющиеся символы из строки, как в примерах, которые вы привели:

input_string = "hbh1od2jf1mmk45m5" 
output_string = remove_duplicates(input_string)
print(output_string) # hb1od2jfmk45

input_string = "h7fy4rno 3"
output_string = remove_duplicates(input_string)
print(output_string) # h7fy4rno 3

Можно записать данную функцию в 1 строку и результат будет такой же:

def remove_duplicates(string): 
return ''.join(sorted(set(string), key=string.index))

Эта функция создает новую строку и добавляет каждый символ из исходной строки только в том случае, если он еще не был добавлен в новую строку. Таким образом, все повторяющиеся символы удаляются, а порядок символов в строке сохраняется.

Такой программы не существует в силу законов мироздания
def remove_duplicates(input_string):
result = ''
for char in input_string:
if char not in result:
result += char
return result

# Пример 1
input_string = 'hbh1od2jf1mmk45m5'
print(remove_duplicates(input_string))

# Пример 2
input_string = 'h7fy4rno 3'
print(remove_duplicates(input_string))

Эта программа работает, проходя по каждому символу во входной строке и добавляя его в результирующую строку только в том случае, если он еще не присутствует в результирующей строке. Затем она возвращает результирующую строку. Вы можете заменить input_string на любую строку, которую вы хотите обработать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *