По условию надо числа Number перевести в двоичную и поменять биты, валидатор мне предлагает проверить на входных данных 1 0 7, я понимаю что можно до бесконечности добавлять не значимые нули, но мне кажется мой алгоритм более точен, да можно добавить в него добавление не значимых нулей, но зачем, чтобы любой индекс менялся?? Но как по мне это в корне неверно, может я где-то и ошибаюсь, интересно другое мнение.
package com.javarush.task.task39.task3903;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/*
Неравноценный обмен
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter a number: ");
long number = Long.parseLong(reader.readLine());
System.out.println("Please enter the first index: ");
int i = Integer.parseInt(reader.readLine());
System.out.println("Please enter the second index: ");
int j = Integer.parseInt(reader.readLine());
System.out.println("The result of swapping bits is " + swapBits(number, i, j));
}
public static long swapBits(long number, int i, int j) {
String binaryString = Long.toBinaryString(number);
char[] bits = binaryString.toCharArray();
char temp = bits[i];
bits[i] = bits[j];
bits[j] = temp;
String modified = new String(bits);
return Long.parseLong(modified, 2);
}
}