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

更新於: 2021年10月6日

378 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告