Учитывая двоичный вход, который представляет двоичное представление положительного числа n, найдите двоичное представление наименьшего числа больше чем n с тем же числом 1 и 0, что и в двоичном представлении n. Если такое число не может быть сформировано, выведите «no more number».
Двоичный вход может быть и может не помещаться даже в unsigned long long int.
Примеры:
Input : 10010 Output : 10100 Here n = (18)10 = (10010)2next greater = (20)10 = (10100)2 Binary representation of 20 contains same number of 1's and 0's as in 18. Input : 111000011100111110 Output : 111000011101001111
Эта проблема просто сводится к поиску следующей перестановки данной строки. Мы можем найти next_permutation () входного двоичного числа.
Ниже приведен алгоритм поиска следующей перестановки в двоичной строке.
- Пройдите двоичную строку bstr справа.
- При прохождении найдите первый индекс i такой, что bstr [i] = '0' и bstr [i + 1] = '1'.
- Обменный символ по индексам «i» и «i + 1».
- Поскольку нам нужно наименьшее следующее значение, рассмотрим подстроку от индекса i + 2 до конца и переместим все 1 в подстроке в конце.
Ниже приведена реализация вышеуказанных шагов.
|
Джава
|
C #
|
Выход:
Binary representation of next greater number = 10100
Сложность времени: O (n), где n — количество бит на входе.
Эта статья предоставлена Аюшем Джаухари . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Двоичное представление следующего числа
- Двоичное представление предыдущего числа
- Появления шаблона в двоичном представлении числа
- Проверьте, является ли фактическое двоичное представление числа палиндромом
- Подсчитайте количество двоичных строк, чтобы во всех единицах не было подстроки длиной больше или равной 3
- Количество способов разбить двоичное число таким образом, чтобы каждая часть делилась на 2
- Найти вхождение заданного двоичного шаблона в двоичное представление элементов массива
- Минимальное количество двоичных строк для представления числа
- Количество шагов, необходимых для преобразования двоичного числа в одно
- Максимальное количество разбиений двоичного числа
- Подсчитать количество подстрок с числовым значением больше X
- Подсчитать количество слов, имеющих сумму значений ASCII, меньшую и большую, чем k
- Десятичное представление данной двоичной строки делится на 5 или нет
- Построить двоичное дерево из строки с представлением в скобках
- Самая длинная общая подстрока в двоичном представлении двух чисел
0.00 (0%) 0 votes