我需要交换int的位置.例如,如果我调用方法swapDigitPairs(482596),它将返回845269. 9和6交换,2和5以及4和8交换.
如果数字包含奇数个数字,请将最左边的数字保留在原始位置.例如,swapDigitPairs(1234567)的调用将返回1325476.我不打算使用字符串解决,我应该使用while循环来解决它.我不应该使用任何数组.
以下是我到目前为止所做的工作.但我被困在交换位置,我知道我需要乘以地方(如第十,千等)取决于数量.但我被困在这一部分.我所做的是逐个检索数字.
public static int swapDigitPairs(int number) {
while(number!=0) {
int firstDigit = number%10;
for(int i =10;i<=;i*=10) {
int secondDigit= firstDigit*i;
}
int leftOverDigit = number/10;
number=leftOverDigit;
}
return number;
}
Run Code Online (Sandbox Code Playgroud)
这是解决方案(已测试):
public static int swapDigitPairs(int number) {
int result = 0;
int place = 1;
while (number > 9) {
result += place * 10 * (number % 10);
number /= 10;
result += place * (number % 10);
number /= 10;
place *= 100;
}
return result + place * number;
}
Run Code Online (Sandbox Code Playgroud)
这里的关键点是:
%10(即number % 10)生成最后一位数这是一些测试和一些边缘情况:
public static void main(String[] args) throws Exception {
System.out.println(swapDigitPairs(482596));
System.out.println(swapDigitPairs(1234567));
System.out.println(swapDigitPairs(12));
System.out.println(swapDigitPairs(1));
System.out.println(swapDigitPairs(0));
}
Run Code Online (Sandbox Code Playgroud)
输出:
845269
1325476
21
1
0
Run Code Online (Sandbox Code Playgroud)