- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find maximum binary string after change in python
Suppose we have a binary string. We can apply each of the following operations any number of times −
If the number contains a substring "00", we can replace it with "10".
If the number contains a substring "10", we can replace it with "01".
Then we have to find the maximum binary (based on its numeric value) string we can get after any number of operations.
So, if the input is like s = "001100", then the output will be 111011, because we can transfer them like (00)1100 -> 101(10)0 -> 1010(10) -> 10(10)01 -> 100(10)1 -> 1(00)011 -> 111011.
To solve this, we will follow these steps −
- length := size of s
- zeros := number of 0s in s
- if zeros < 2, then
- return s
- s := remove all '1's from left of s
- leading_ones := length - size of s
- leading_ones := leading_ones + zeros - 1
- trailing_ones := length - leading_ones - 1
- answer_left := leading_ones number of 1s
- answer_right := trailing_ones number of 1s
- answer_left concatenate 0 concatenate answer_right and return
Example
Let us see the following implementation to get better understanding −
def solve(s): length = len(s) zeros = s.count('0') if zeros < 2: return s s = s.lstrip('1') leading_ones = length - len(s) leading_ones += zeros - 1 trailing_ones = length - leading_ones - 1 answer_left = '1' * leading_ones answer_right = '1' * trailing_ones return ''.join([answer_left, '0', answer_right]) s = "001100" print(solve(s))
Input
"001100"
Output
111011
Advertisements