Как поменять местами две переменные без третьей

01.07.2013

Очень часто на собеседованиях задают один вопрос по алгоритмике: Как поменять местами содержимое двух переменных не используя третьей?

Итоговый код на Objective C выглядит так:

int v1,v2;
v1=5;
v2=6;
NSLog(@»Было %i i %i»,v1,v2);
v1=v1+v2;
v2=v1-v2;
v1=v1-v2;
NSLog(@»Стало %i i %i»,v1,v2);

Чистая математика. Вот только поменять так можно только числа. А строки и обьекты увы нельзя.

4 комментария

  • Руслан 10.07.2013 в 8:07 пп

    Строки разве нельзя точно также — склеить в одну, потом отрезать часть в одну переменную, остаток во вторую… 🙂

    • Максим 10.07.2013 в 10:54 пп

      А где хранить сколько отрезать:)?

      • greenLiss 24.10.2013 в 9:23 дп

        Вот пример на 1С, уж извиняйте за язык 🙂

        а = «Привет»;
        б = «Пока»;
        а = а + б; //ПриветПока
        б = Лев(а,СтрДлина(а)-СтрДлина(б)); //Привет
        а = Прав(а,СтрДлина(а)-СтрДлина(б)); //Пока

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

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