5种方法巧妙交换变量值

来源:互联网 发布:不备案域名 编辑:程序博客网 时间:2024/06/01 18:46

今天我们看一道十分经典的面试题,交换2个整数变量的值。

在算法竞赛中,最简单粗暴的方法:

System.out.println("a:" + b + ",b:" + a);

在开发中,最常用的方法:

int c;c = a;a = b;b = c;


在面试中,这里提供3种解法:

法一-位运算:

a = a^b;b = a^b;//a^b ^ b = aa = a^b;//a^b ^ a = b


法二-加减:

a = a+b;b = a-b;//a+b-b=aa = a-b;//a+b-a=b


法三-一行代码:

<span style="white-space:pre"></span>b = (a+b)-(a=b);


一道面试题多种解法,不同场景不同解法,high起来~

测试源代码:

//面试题:交换2个整数变量的值public class OperatorTest {/** * 权兴权意-20160918 */public static void main(String[] args) {// TODO Auto-generated method stubint a = 10;int b = 20;System.out.println("a:" + a + ",b:" + b);System.out.println("------------");//竞赛//System.out.println("a:" + b + ",b:" + a);//开发/*int c;c = a;a = b;b = c;*///面试/*a = a^b;b = a^b;//a^b ^ b = aa = a^b;//a^b ^ a = ba = a+b;b = a-b;//a+b-b=aa = a-b;//a+b-a=b*/b = (a+b)-(a=b);System.out.println("a:" + a + ",b:" + b);}}







0 0
原创粉丝点击