10進数を2進数に変換してから、 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));
}
}
は私のプログラムの最適です。
はOKですが、ループは 'num <= 0'のために終了しません – yacc