4.交换变量值
题目描述
- 描述 在不使用第三个变量的情况下交换两个int类型变量的值
- 输入描述: a变量和b变量的值
- **输出描述:**交换后a变量和b变量的值,中间用空格隔开
- 示例:
输入: 10 5
输出: 5 10
解题思路
思路一: 使用加法实现
java
a = a + b;//a现在的值为a+b和的值
b = a - b;//b现在的值为a的值--->b=a+b - b = a;
a = a - b;//a现在的值为b的值--->a=a+b - a = b;
思路二: 使用加法实现(简单版)
java
a += b - (b = a);
思路三: 使用异或实现
java
a = a ^ b; //a现在的值为异或后的结果
b = a ^ b; //异或后的结果在与b异或,结果为a
a = a ^ b; //异或后的结果在与a异或,结果为b
思路四: 使用异或实现(简单版)
java
a ^= b ^ (b = a);
核心思路:题目要求不使用第三方变量,则需要将两个变量的值以某种规则变为一个值后赋值给一个变量,与另一个变量完成交换,最后完成整个交换。
代码实现
思路一: 使用加法实现
java
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();
//write your code here.......
a = a + b;//a中为和的值
b = a - b;//b中为a的值
a = a - b;//a中为b的值
System.out.println(a+" "+b);
}
}
思路二: 使用加法实现(简单版)
java
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();
//write your code here.......
a += b - (b = a);
System.out.println(a+" "+b);
}
}
思路三: 使用异或实现
java
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();
//write your code here.......
a = a ^ b; //a现在的值为异或后的结果
b = a ^ b; //异或后的结果在与b异或,结果为a
a = a ^ b; //异或后的结果在与a异或,结果为b
System.out.println(a+" "+b);
}
}
思路四: 使用异或实现(简单版)
java
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();
//write your code here.......
a ^= b ^ (b = a);
System.out.println(a+" "+b);
}
}