【问题标题】:Swap two variables value without using third variable in php [duplicate]在php中不使用第三个变量交换两个变量值[重复]
【发布时间】:2013-08-21 11:40:16
【问题描述】:

我想分享一个在面试中被问到最多的问题,我无法回答这个问题,但最终我找到了答案:

如何在不使用第三个变量的情况下交换 2 个变量值??

【问题讨论】:

  • @ShankarDamodaran 抱歉,我不知道,我以为它不在 StackOverflow 中,这就是我分享它的原因!
  • 没问题。很高兴您得到了解决方案。
  • 我也有过这样的采访,他们是很愚蠢的IMO,他们怎么能用这么点小事来判断你在你所在的领域有多好?

标签: php


【解决方案1】:

此方法适用于任何变量类型:

$a = 5;
$b = 6;
list($a, $b) = array($b, $a);
print $a . ',' . $b;

输出:

6,5

另一种简单的方法(仅适用于数字,不适用于字符串/数组/等)是

$a =  $a + $b;  // 5 + 6 = 11
$b = $a - $b;   // 11 - 6 = 5
$a = $a - $b;  // 11 - 5 = 6
print $a . ',' . $b;

输出:

6,5

【讨论】:

  • $b = $a + $b - ($a = $b);
  • @mjolnic 变量和对象是不同还是相同? ,这里的问题是关于变量而不是对象。
【解决方案2】:

您确定想要XOR swap algorithm 吗?至少对于数值变量。

常规交换需要使用临时存储 多变的。但是,使用 XOR 交换算法,没有临时存储 是需要的。算法如下:

X := X XOR Y

Y := X XOR Y

X := X XOR Y

虽然我从未见过它在实际场景中使用过(除了汇编器工作)

【讨论】:

  • 实现起来太难了,因为我们想要更简单的方法来进行简单的操作,比如变量交换。
  • $a xor $b 到底有多难?
  • 不是我。我赞成这个:)
猜你喜欢
  • 1970-01-01
  • 2014-12-04
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多