|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
Функция реверса строки05.11.2010, 04:43. Показов 46770. Ответов 85
Метки нет (Все метки)
На собеседовании в одну компанию меня попросили на бумажке написать функцию реверса строки.
Буквально парой дней раньше я услышал о том что на собеседованиях частенько просят решить именно эту задачу. Ее простота насторожила меня и заставила искать наиболее красивое/оптимизированное/необычное решение. И я его таки нашел и малость перестарался. Как я узнал позже интервьюер решил что я дал неверный ответ. Так какое же у этой простой задачки может быть оригинальное решение?
0
|
|
| 05.11.2010, 04:43 | |
|
Ответы с готовыми решениями:
85
ф-ция реверса строки
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 18:56 | |
|
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 19:02 [ТС] | |
|
Тебе не видна разница между arr[i] и *left?
первое - это *(arr + i) второе не меняется *left. 4 лишних суммирования. Добавлено через 4 минуты Мы в разделе с/с++. Я решил не уточнять язык исполнения.
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 19:03 | |
|
Zilon:
Такое ощущение, что ты мне экзамен устроил. Если бы я писал решение через арифметику указателя, тогда индексация отсутствовала, потому как ее применение было не уместно.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 19:07 [ТС] | |
|
Если что сорри, не хотел тебя задеть.
Однако ясно же сказал "оптимизированное по скорости" и про то что "не алгоритмом единым...", т.е. дело в реализации. Если бы я начал наводить людей на мысли то в чем тогда смысл головоломки?
1
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 19:12 | |
|
Zilon:
Ладно, если уж хочешь развития темы, тогда приведи, еще какой нибудь алгоритм решения данной задачи, просто ради интереса, я знаю еще три решения, правда, они менее эффективны чем рассмотренный вариант.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 19:16 [ТС] | |
|
Еще 3 решения? Насколько принципиальны их отличия?
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 19:19 | |
|
Zilon:
на много, возможно ты додумаешься, может даже четвертое придумаешь.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
||
| 05.11.2010, 19:24 [ТС] | ||
|
А вариантов может быть много, но все похожи - можно выделить память и 2 раза скопировать данные в разных направлениях, можно с середины начать и пр. Это все в принципе одно и то же. Друге варианты в голову не приходят. Так что там за варианты?
Добавлено через 2 минуты
0
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||
| 05.11.2010, 19:25 | ||
Если я сейчас выложу, то это читерство получается.
0
|
||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
||
| 05.11.2010, 19:30 [ТС] | ||
|
0
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 05.11.2010, 19:33 | |
|
Zilon:
Все реально.
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 19:49 [ТС] | |
|
И соблюдены все условия? Если да, то я хочу пива. Под пивко раньше алгоритмами занимался.
Добавлено через 13 минут Из идей только есть только варианты перестановок в разных порядках. 1. начинаем с середины и идем к краям. 2. проходимся змейкой по схеме 1 : n, n-1 : 2, 3 : n - 2, и т.д. 3. Создаем буфер такого же размера, линейно копируем элементы от n-го до 1-го (в обратном порядке) затем мемкопи. Добавлено через 1 минуту Но все это (кроме варианта 3) как то похоже.
0
|
|
|
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
|
||||||
| 05.11.2010, 20:35 | ||||||
|
Мне одному кажется странным что в функции переворачивания строки используется указатель на int, но при этом нигде не проверяется что хвост строки укладывается в sizeof(int)?
И вот уже приведенный вариант используется и у меня, примерно также:
0
|
||||||
|
|
||
| 05.11.2010, 20:42 | ||
|
0
|
||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|||||||||||||
| 05.11.2010, 22:32 [ТС] | |||||||||||||
|
Добавлено через 9 минут Это:
взгляд исполняется быстрее чем это:
0
|
|||||||||||||
|
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
|
||
| 05.11.2010, 23:19 | ||
0
|
||
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
|
| 05.11.2010, 23:54 [ТС] | |
|
О, да. Поскольку именно эти спички являются темой нашей беседы
0
|
|
|
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
|
||
| 06.11.2010, 01:18 | ||
|
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 06.11.2010, 01:40 | |
|
KpeHDeJIb, С тупой
0
|
|
|
6 / 6 / 0
Регистрация: 05.11.2010
Сообщений: 60
|
||||||
| 06.11.2010, 01:52 [ТС] | ||||||
|
Вобщем то начинали мы с интересных вариантов реализации.
А что оптимизирование - это уже частное мнение каждого. Наконец подводя черту под тем что быстрее выкладываю результаты "критерия истины": Эксперимент был проведен на таком коде:
0
|
||||||
| 06.11.2010, 01:52 | |
|
Есть ли функция реверса одномерного массива? Защита от реверса проекта Реализация реверса массива Защита от реверса ( md5 ) Полумост для реверса мотора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|