Информация об изменениях

Сообщение Re[12]: Зачем просят перевернуть строку на интервью? от 27.10.2018 18:26

Изменено 27.10.2018 18:28 σ

Re[12]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AleksandrN, Вы писали:


Тё>>>Те же яйца (индекс), вид в профиль.


AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.


Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.
Re[12]: Зачем просят перевернуть строку на интервью?
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AleksandrN, Вы писали:


Тё>>>Те же яйца (индекс), вид в профиль.


AN>>Представь свой вариант переворота C-строки в однобайтной кодировке.


Тё>

Тё>void reverse( char[] s, int start, int length)
Тё>{
Тё>    if (length > 1) {
Тё>    s[start] ^= s[start+length-1];
Тё>    s[start+length-1] ^= s[start];
Тё>    s[start] ^= s[start+length-1];
Тё>    reverse(s, start+1, length-2);
Тё>    }
Тё>}

Тё>


Не удовлетворяет условию задачи. Требование было — не выделять доп. памяти.
Очевидно, что под этим имеется в виду не только отсутствие явного malloc, но и отсутствие потребления стека пропорционально длине строки.

А то таким "хитрым" приёмом кучу алгоритмов можно превратить в якобы O(1) по памяти, храня состояние в стеке вызовов.