Завершено из-за ошибки тайм-аута в коде Java в программе хакерранк - PullRequest
0 голосов
/ 14 декабря 2018

Задача (Hackerrank). Получив целое число base-10, n, преобразуйте его в двоичный (base-2).Затем найдите и напечатайте целое число base-10, обозначающее максимальное число последовательных 1 в двоичном представлении n.

Мой код приведен ниже;который показывает «RuntimeError» - и сообщение компилятора «Прервано из-за тайм-аута».

import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int n=scn.nextInt();
        int rem = 0,s = 0,t = 0;
        while (n > 0)
            rem = n % 2;
            n = n / 2;
        if (rem == 1) 
        {
            s++;
            if (s >= t) 
                t = s;
            else
                s = 0;
        }
        System.out.println(t);
scn.close();
    }
}

Не могли бы вы помочь мне исправить эту ошибку?

1 Ответ

0 голосов
/ 14 декабря 2018
while (n > 0)
    rem = n % 2;
    n = n / 2;

Здесь n = n / 2 находится вне цикла, поэтому n никогда не изменится, и это будет бесконечный цикл.Вот почему вы получаете тайм-аут.

Измените его на:

while (n > 0) {
    rem = n % 2;
    n = n / 2;
}

Подсказка: Всегда используйте фигурные скобки.Они гарантируют, что несколько команд являются частью if / while / любого блока, и улучшат удобочитаемость для блоков с одной инструкцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...