Python程式:將二進位制字串分成兩部分以找到最大分數


假設我們有一個二進位制字串s。現在讓我們考慮一個操作,我們將字串分成兩個非空的子字串s1和s2。此拆分的得分是s1中“0”的計數和s2中“1”的計數之和。我們必須找到我們可以獲得的最大分數。

因此,如果輸入類似於s = "011001100111",則輸出將為8,因為我們可以將字串拆分為"01100" + "110111"。然後,分數是3 + 5 = 8。

為了解決這個問題,我們將遵循以下步驟:

  • ones := s中“1”的數量

  • zeros := 0

  • ans := 0

  • 對於範圍從0到s的大小減2的i,執行:

    • 如果s[i]等於“0”,則

      • zeros := zeros + 1

    • 否則,

      • ones := ones - 1

    • ans := ans和(ones + zeros)中的最大值

  • 返回ans

示例

讓我們看看下面的實現,以便更好地理解。

def solve(s):
   ones = s.count("1")
   zeros = 0
   ans = 0
   for i in range(len(s) - 1):
      if s[i] == "0":
         zeros += 1
      else:
         ones -= 1
      ans = max(ans, ones + zeros)
   return ans

s = "011001100111"
print(solve(s))

輸入

"011001100111"

輸出

8

更新於:2021年10月11日

292 次瀏覽

開始您的職業生涯

透過完成課程獲得認證

開始
廣告