檢查Python字串的兩半是否至少包含一個不同的字元


假設我們有一個小寫字串;我們必須檢查是否可以從中間分割字串,這將得到兩個至少在一個字元上不同的部分。它們可能包含不同的字元或每個字元的頻率不同。如果字串長度為奇數,則忽略中間元素並檢查其餘元素。

因此,如果輸入類似於s = "helloohekk",則輸出將為True,因為"helloohekk"的左半部分是"hello",右半部分是"ohekk",左右兩部分不同。

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

  • left_freq := 一個空對映
  • right_freq := 一個空對映
  • n := s的長度
  • 對於範圍從0到(n/2)-1的i,執行:
    • left_freq[s[i]] := left_freq[s[i]] + 1
  • 對於範圍從(n/2)到n-1的i,執行:
    • right_freq[s[i]] := right_freq[s[i]] + 1
  • 對於s中的每個字元,執行:
    • 如果right_freq[char]與left_freq[char]不同,則:
      • 返回True
  • 返回False

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

示例

 線上演示

from collections import defaultdict
def solve(s):
   left_freq = defaultdict(int)
   right_freq = defaultdict(int)
   n = len(s)
   for i in range(n//2):
      left_freq[s[i]] += 1
   for i in range(n//2, n):
      right_freq[s[i]] += 1
   for char in s:
      if right_freq[char] != left_freq[char]:
         return True
   return False
s = "helloohekk"
print(solve(s))

輸入

"helloohekk"

輸出

True

更新於:2020年12月30日

125 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.