Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39

Удалить из строки повторы и вернуть наименьшую строку в лексикографическом порядке

26.09.2023, 14:04. Показов 781. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решаю задачи на leetcode и попалась такая задача. Пример "cbacdcbc" -> "acdb". Написал так, проходит 270/290 тестов и потом превышение по памяти. Видимо надо оптимизировать, но не очевидно как.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from itertools import combinations
def remove(s):
    def sum_str(t):
        x = ''
        for i in t:
            x += i
        return x
    y = []
    x = list(combinations(s, len(set(s))))
    for i in x:
        if len(set(i)) == len(set(s)):
            y.append(i)
    return sum_str(min(y))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2023, 14:04
Ответы с готовыми решениями:

Отсортировать введенную строку в лексикографическом порядке
Есть вот такой вот рабочий код: #include <stdio.h> #include <string.h> #define MAX 30000 char text; int position, number; ...

Отсортировать строки в лексикографическом порядке по возрастанию, проверить наличие введенной строки в списке
Здравствуйте! Нужна помощь с выполнением следующего задания. Заранее спасибо. Создать список строк и заполнить его случайными строками...

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

8
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
26.09.2023, 14:37
Цитата Сообщение от Daos711 Посмотреть сообщение
Удалить из строки повторы и вернуть наименьшую строку в лексикографическом порядке
Python
1
2
a ="cbacdcbc"
print(''.join(sorted(set(a))))
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39
26.09.2023, 15:07  [ТС]
Прочитайте внимательнее что должно быть на выходе
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
26.09.2023, 15:14
тут можно использовать Set, а можно и Counter.
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39
26.09.2023, 16:19  [ТС]
Боюсь эти методы не позволяют учитывать именно лексикографический порядок
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
26.09.2023, 17:17
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from collections import Counter
 
 
def remove1(s):
    if len(s) < 2:
        return s
    d = Counter(s)
    j = 0
    for i in range(len(s)):
        if s[i] < s[j]:
            j = i
        if d[s[i]] == 1:
            break
        d[s[i]] -= 1
    return s[j] + remove1(s[j + 1:].replace(s[j], ''))
 
 
def remove2(s):
    d = sorted(set(s))
    for ch in d:
        i = s.index(s)
        if len(set(s[i:])) == len(d):
            return ch + remove2(s[i:].replace(ch, ''))
    return ''
 
 
print(remove1("cbacdcbc"))
print(remove2("cbacdcbc"))
Добавлено через 6 минут
тут еще со стеком можно поиграться.
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
26.09.2023, 17:34
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
    public String removeDuplicateLetters(String s) {
        final Deque<Character> stack = new ArrayDeque<>();
        final Set<Character> used = new HashSet<>();
        final Map<Character, Integer> lastIndexes = new HashMap<>();
        for (var i = 0; i < s.length(); i++) {
            lastIndexes.put(s.charAt(i), i);
        }
        for (var i = 0; i < s.length(); i++) {
            final var c = s.charAt(i);
            if (used.contains(c)) {
                continue;
            }
            while (!stack.isEmpty() && c < stack.peek() && i < lastIndexes.get(stack.peek())) {
                used.remove(stack.pop());
            }
            stack.push(c);
            used.add(c);
        }
        final var sb = new StringBuilder();
        while (!stack.isEmpty()) {
            sb.append(stack.pop());
        }
        sb.reverse();
        return sb.toString();
    }
}

Не по теме:

В шоке от таких Medium задач: пишем Medium - Hard в уме.



Добавлено через 6 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution:
    def removeDuplicateLetters(self, s: str) -> str:
        stack = []
        used = set()
        lastIndexes = dict((c, i) for i, c in enumerate(s))
        for i, c in enumerate(s):
            if c in used:
                continue
            while stack and c < stack[-1] and i < lastIndexes[stack[-1]]:
                used.remove(stack.pop())
            stack.append(c)
            used.add(c)
        return "".join(stack)
2
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
27.09.2023, 07:29
Цитата Сообщение от Daos711 Посмотреть сообщение
Прочитайте внимательнее
А, пардон, читал по диагонали... но задание не слишком ясно написано, вчитываться, действительно, надо внимательно...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38197 / 21130 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
27.09.2023, 08:05
Цитата Сообщение от Daos711 Посмотреть сообщение
Видимо надо оптимизировать, но не очевидно как
Цитата Сообщение от Daos711 Посмотреть сообщение
x = list(combinations(s, len(set(s))))
- тут память будет просто "жраться" (если различных символов много)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.09.2023, 08:05
Помогаю со студенческими работами здесь

Упорядочить строки в лексикографическом порядке
нужно упорядочить строки в лексикографическом порядке. вот код, но он не выводит на экран помогите найти ошибки, пожалуйста #include...

Отсортировать строки в лексикографическом порядке
разработать 2 подпрограммы,одна из которых сравнивает две строки по лексикографическому порядку,а другая обменивает значения двух...

Файлы. Строки. Перестановка в лексикографическом порядке.
Оформить в модуле подпрограммы перестановки в середине рядка всех символов в лексикографичном порядке,уничтожение в рядке всех...

Следующая анаграмма строки в лексикографическом порядке
Условие Для данного слова (последовательности строчных латинских букв) выведите следующее за ним (в лексикографическом порядке) слово,...

Выведите все строки длины N в лексикографическом порядке
Доброго времени суток. Помогите пожалуйста решить По данным числам N и K выведите все строки длины N из символов 0..K-1 в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru