论坛首页 招聘求职论坛

今天去面试了一次。。悲剧了。。大家帮看看这题

浏览 25573 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (10)
作者 正文
   发表时间:2011-07-13  
pop1030123 写道
lj830723 写道
haohouhou 写道
b = a + 0*(a = b)

当你们都在关注java异或操作的时候,是不是忘记了这一个犹如天马行空的创意思维

嗯,似乎是一个很好的解法唉。还需要验证一下。

验证了,很有创意
1 请登录后投票
   发表时间:2011-07-13  
三种方法总结:
  1、
  2、
  3、
结束。
0 请登录后投票
   发表时间:2011-07-13   最后修改:2011-07-13
haohouhou 写道
b = a + 0*(a = b)

  记得当年老师说过  程序员能一行解决的问题绝对不写两行
0 请登录后投票
   发表时间:2011-07-13   最后修改:2011-07-13
sue1108 写道
pop1030123 写道
lj830723 写道
haohouhou 写道
b = a + 0*(a = b)

当你们都在关注java异或操作的时候,是不是忘记了这一个犹如天马行空的创意思维

嗯,似乎是一个很好的解法唉。还需要验证一下。

验证了,很有创意



dim a,b
a=10
b=11
b = a + 0*(a = b)
msgbox a &"-"&b



	int a=10,b=11;
	b = a + 0*(a = b);
	printf("a=%d,b=%d",a,b);

vbs 验证失败,返回结果a=10,b=10
VC2010验证失败,返回结果a=11,b=11

证明:此写法不够通用。只能在特定语言环境下使用。
0 请登录后投票
   发表时间:2011-07-13  
lyw985 写道
jancy 写道
zhangyang6380006 写道
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;

如果2个变量都是数字,这样可以
字符串的话,就不行了。
这样比较通用:
b ^= a ^= b ^= a;


写这么复杂。。。。。

实际上就是异或操作

a=a^b;
b=b^a;
a=b^a;

+1
0 请登录后投票
   发表时间:2011-07-13  
代码不是越复杂越好

要清晰易懂,这样有利于工作交接和代码维护
0 请登录后投票
   发表时间:2011-07-16   最后修改:2011-07-16
haohouhou 写道
b = a + 0*(a = b)



呵呵,感觉还可以!
0 请登录后投票
   发表时间:2011-07-16  
lyw985 写道
jancy 写道
zhangyang6380006 写道
我记得我上次面试也问了这个,我当时顿住了,10钞后想出来了,没有第三变量,必然是两个变量相加和相减操作,a=a+b;b=a-b;a=a-b;

如果2个变量都是数字,这样可以
字符串的话,就不行了。
这样比较通用:
b ^= a ^= b ^= a;


写这么复杂。。。。。

实际上就是异或操作

a=a^b;
b=b^a;
a=b^a;

0 请登录后投票
   发表时间:2012-02-22  
a=b+(b=a)-a
0 请登录后投票
   发表时间:2012-02-22  
javaii 写道
出这种面试题的就是闲的蛋痛,有个叼用

表示相当的蛋疼
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics