Python程式:查詢更改後最大的二進位制字串
假設我們有一個二進位制字串。我們可以對它應用以下任何操作任意次數:
如果字串包含子字串 "00",我們可以將其替換為 "10"。
如果字串包含子字串 "10",我們可以將其替換為 "01"。
然後我們需要找到在進行任意次數操作後可以得到的最大二進位制字串(基於其數值)。
例如,如果輸入為 s = "001100",則輸出將為 111011,因為我們可以像這樣轉換它們:(00)1100 -> 101(10)0 -> 1010(10) -> 10(10)01 -> 100(10)1 -> 1(00)011 -> 111011。
為了解決這個問題,我們將遵循以下步驟:
- length := s 的長度
- zeros := s 中 0 的數量
- 如果 zeros < 2,則
- 返回 s
- s := 從 s 的左側刪除所有 '1'
- leading_ones := length - s 的長度
- leading_ones := leading_ones + zeros - 1
- trailing_ones := length - leading_ones - 1
- answer_left := leading_ones 個 1
- answer_right := trailing_ones 個 1
- 將 answer_left 連線 0 連線 answer_right 並返回
示例
讓我們看看以下實現,以便更好地理解:
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))
輸入
"001100"
輸出
111011
廣告