10 진수를 2 진수로 변환하는 프로그램을 작성한 후 다음과 같은 기능을 사용하지 않고 연속 1을 찾습니다. Integer.toBinary() 등 내 프로그램 : 사전에 감사합니다 더 최적화 될 수 있다면 어떻게 다음하지 않을 경우이것이 좋은 프로그래밍 실습인지 알고 싶습니다. 어떻게 프로그램을 더 효율적이고 효율적으로 작성할 수 있습니까?
public class Practise {
static String decimalToBinary(int num) {
String binaryN = "";
while (true) {
binaryN += num % 2;
num = num/2;
if (num == 1) {
binaryN += 1;
break;
}
}
String nBinary = "";
for (int i = binaryN.length() - 1; i >= 0; i--) {
nBinary += binaryN.charAt(i);
}
System.out.println(nBinary);
return nBinary;
}
static int consecutiveOnes(String binaryN) {
int consecutive = 0;
int max = 0;
boolean isFreshStart = false;
for (int i = 0; i < binaryN.length(); i++) {
if (binaryN.charAt(i) == '1') {
if (isFreshStart) {
consecutive = 1;
isFreshStart = false;
} else
consecutive++;
} else {
isFreshStart = true;
}
if (consecutive > max)
max = consecutive;
}
return max;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String binaryN = decimalToBinary(n);
System.out.println(consecutiveOnes(binaryN));
}
}
내 프로그램 최적입니다.
괜찮아 보이지만, 루프는'num <= 0'에 대해서 끝나지 않을 것입니다. – yacc