题解 | 交换变量值

交换变量值

https://www.nowcoder.com/practice/bd243c9bef70492f91959cc5556546a8

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

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

        System.out.println(a + " " + b);
    }
}

核心逻辑总结

通过异或把 两个数的位差异 暂存到 a 里,再利用 “异或自己为 0、异或 0 为自己” 的性质,先把 b 还原成原来的 a,再把 a 还原成原来的 b,全程不需要临时变量。

举例:

假设:

  • 原来的 a=苹果b=香蕉
  • 第一步:a = 苹果^香蕉(把 “苹果和香蕉的差异” 存到 a 里);
  • 第二步:b = (苹果^香蕉) ^ 香蕉 → 先算 香蕉^香蕉=空(对应 0),再算 苹果^空=苹果b 变成苹果;
  • 第三步:a = (苹果^香蕉) ^ 苹果 → 先算 苹果^苹果=空,再算 香蕉^空=香蕉a 变成香蕉。
全部评论

相关推荐

03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务