1 / 1 / 1
Регистрация: 16.10.2023
Сообщений: 8
|
||||||
Реализация нативного .split() без любых нативных методов16.10.2023, 10:13. Показов 1674. Ответов 24
Приветствую всех!
Задача следующая: необходимо реализовать нативный строковый метод .split() с использованием ТОЛЬКО ОДНОГО цикла for и (по необходимости) методы .charCodeAt() и .fromCharCode(). Любые другие нативные методы запрещены! Хотелось бы увидеть максимально грамотную, лаконичную и понятную реализацию. Для примера прикрепляю свой вариант, мне он не нравится, его тяжело читать и обслуживать, однако он работает:
Нужно в точности повторить поведение нативного .split(). Темы, которые Вы кидаете лишь коссвенно касаются моего вопроса, а не отвечают на него
0
|
16.10.2023, 10:13 | |
Ответы с готовыми решениями:
24
Найти в строке самое длинное слово без split, для типа string, не используя методов класса JNI. Проблема с вызовом нативных методов Реализация двоичного дерева без использования готовых методов |
![]() 2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,843
|
|||||||
16.10.2023, 12:14 | |||||||
Чет много кода. По идее перебираешь символы, сохраяя их в буффер. Как только наткнула на разделитель, буфер скидываем в финальный результат, буфер очищаем
Добавлено через 6 минут
0
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
||||||
16.10.2023, 12:22 | ||||||
Блин, кто придумывает такие дурацкие задачки? С одним циклом for... офигеть.
Да, вот такую строчку еще не забудьте распарсить:
0
|
1 / 1 / 1
Регистрация: 16.10.2023
Сообщений: 8
|
|||
16.10.2023, 12:51 [ТС] | |||
Главная сложность в этой таске возникает тогда, когда разделителем выступает не один символ, а строка. От сюда и так много кода в моем решении, хотя, наверняка есть более лаконичный вариант. В своем решении я сохраняю текст в одну переменную, потом, когда встречается первый символ дивайдера, я начинаю собирать строку в другую переменную, затем нужно определить, что добавлять в результат первее, первую переменную или вторую ... и так далее. + все без нативных методов. Может еще есть варианты ? Добавлено через 2 минуты
0
|
16.10.2023, 13:24 | |
Не по теме: Ща придет Драмм и всех выалгоритмизирует :D
0
|
![]() 2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,843
|
||||||
16.10.2023, 13:48 | ||||||
Добавлено через 8 минут Тогда про поддержку RegExp не забудьте, а то split ее поддерживает Добавлено через 12 минут Chat gpt solution без поддержки regex, но в целом хендлит кейс с разделителем > 1 символа
1
|
1 / 1 / 1
Регистрация: 16.10.2023
Сообщений: 8
|
|||||||
16.10.2023, 14:12 [ТС] | |||||||
Это решение легче читать, чем мой прошлый вариант, соблюдены все условия и поведение в точности копирует поведение нативного .split(). За исключением regexp'ов в аргументах, этого в задании не было Ваше решение пока не изучал, но вижу, что там два цикла, нужен один.
0
|
![]() 2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,843
|
||||||||
16.10.2023, 14:18 | ||||||||
![]()
1
|
молодой
![]() ![]() ![]() |
|||||||
16.10.2023, 15:29 | |||||||
вроде работает, но выглядит конечно, не очень красиво. хотел сделать под скользящее окно с размером делителя, получился промежуточный вариант попробую переделать под нормальное скользящее окно Оценка по времени в худшем случае O(2*n)=>O(n) по памяти O(n)
2
|
1 / 1 / 1
Регистрация: 16.10.2023
Сообщений: 8
|
|||||||||||||||||
16.10.2023, 15:57 [ТС] | |||||||||||||||||
Я пришел к вот такому решению, которое, пока что, хендлит все мои тесты:
0
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
||
16.10.2023, 18:18 | ||
0
|
молодой
![]() ![]() ![]() |
||||||
17.10.2023, 04:38 | ||||||
![]() Решение
С помощью алгоритма скользящего окна, как и прежде время работа примерно O(n) в самом худшем случае если специально подобрать под строку делитель, который почти полность дублирует строку время будет O(n*длина делителя).
1
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|||
17.10.2023, 10:02 | |||
0
|
1 / 1 / 1
Регистрация: 16.10.2023
Сообщений: 8
|
||||||
17.10.2023, 10:05 [ТС] | ||||||
![]() Решение
1
|
![]() |
|||||||||
17.10.2023, 22:49 | |||||||||
Пара тестов для сравнения результатов кода из сообщения номер 17 и результатов нативного сплита:
![]()
2
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|
18.10.2023, 10:48 | |
dull-, вы про валидацию входящих данных слышали вообще? И про try/catch...
И по поводу номинации... вы там как раз в топе со своим ограничением в 1 цикл ![]()
0
|
18.10.2023, 10:48 | |
Помогаю со студенческими работами здесь
20
Реализация функции split реализация php функции split() Своя реализация метода Split Написать программу, сравнивающую быстродействие двух (любых) методов сортировки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|