Python程式檢查兩個列表中重疊的字首 - 字尾


通常,字首是出現在字串或列表或元組或數字開頭的一系列字元,而後綴是出現在字串或數字或列表或元組末尾的一系列字元。

例如,當我們考慮列表 [1,2,3,4,5] 時,字首為 [1,2,3],字尾為 [3,4,5]

字首和字尾常用於各種程式設計操作,例如字串操作、文字處理和資料分析,以引用序列的特定部分。

檢查兩個列表中重疊的字首和字尾涉及比較列表開頭和結尾的公共元素,以確定它們是否重疊或共享公共元素。

在本文中,我們將介紹在 Python 中檢查兩個列表中重疊字首或字尾的不同方法。

使用蠻力方法

在解決問題和演算法設計方面,“蠻力”一詞指的是一種直接且窮舉的解決問題的方法。它涉及嘗試所有可能的解決方案或檢查所有可能的組合以找到所需的結果。

但是,在程式設計方面,蠻力解決方案可能不是最有效或最最佳化的方案,但它通常是最簡單、最易於實現的方案。在探索更最佳化的演算法之前,它可以作為解決問題的良好起點。

為了實現檢查兩個列表中字首和字尾重疊的方法,需要執行以下步驟。

  • 迭代從 1 到較短列表長度的所有可能的字首長度。

  • 對於每個字首長度,將第一個列表的最後 prefix_length 個元素與第二個列表的前 prefix_length 個元素進行比較。

  • 如果匹配,則表示存在重疊的字首和字尾。返回 True。

  • 如果在檢查所有可能的字首長度後未找到匹配項,則返回 False。

def has_overlapping_prefix_suffix(list1, list2):
   shorter_list = min(list1, list2, key=len)
   longer_list = max(list1, list2, key=len)
   for prefix_length in range(1, len(shorter_list) + 1):
      if shorter_list[-prefix_length:] == longer_list[:prefix_length]:
         return True
   return False
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
if has_overlapping_prefix_suffix(list1, list2):
   print("Lists have an overlapping prefix and suffix.")
else:
   print("Lists do not have an overlapping prefix and suffix.")

輸出

Lists have an overlapping prefix and suffix.

使用最佳化方法

在解決問題和演算法設計方面,“最佳化”方法指的是與蠻力解決方案相比,旨在更有效並在時間和空間複雜度方面表現更好的解決方案。

為了實現檢查兩個列表中字首和字尾重疊的最佳化方法,需要執行以下步驟。

  • 連線兩個列表以形成一個新列表。

  • 迭代所有可能公共字首和字尾的長度(從 1 到組合列表長度的一半)。

  • 對於每個長度,檢查前 prefix_suffix_length 個元素是否等於後 prefix_suffix_length 個元素。

  • 如果匹配,則表示存在重疊的字首和字尾。返回 True。

  • 如果在檢查所有可能的長度後未找到匹配項,則返回 False。

def has_overlapping_prefix_suffix(list1, list2):
   combined_list = list1 + list2
   for prefix_suffix_length in range(1, len(combined_list) // 2 + 1):
      if combined_list[:prefix_suffix_length] == combined_list[-prefix_suffix_length:]:
         return True
   return False
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
if has_overlapping_prefix_suffix(list1, list2):
   print("Lists have an overlapping prefix and suffix.")
else:
   print("Lists do not have an overlapping prefix and suffix.")

輸出

Lists do not have an overlapping prefix and suffix.

更新於: 2023年10月19日

259 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.