使用 Python 檢查是否可以使用給定的單片語成一個雙字元字串


假設我們有一個長度為 2 的字串 s,還有一個單詞列表 w,其中所有單詞的長度都為 2。我們需要檢查是否可以連線 w 中的單詞,並且連線後的字串是否包含 s 作為子字串。

所以,如果輸入像 s = "no",w = ["ol", "on", "ni", "to"],那麼輸出將是 True,因為我們可以連線像 "onol" 這樣的字串,其中包含 "no"

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

  • n := w 中單詞的數量
  • char_0 := False,char_1 := False
  • 對於 i 從 0 到 n - 1,執行:
    • 如果 w[i] 與 s 相同,則:
      • 返回 True
    • 如果 s[0] 與 w[i, 1] 相同,則:
      • char_0 := True
    • 如果 s[1] 與 w[i, 0] 相同,則:
      • char_1 := True
    • 如果 char_0 和 char_1 都為真,則:
      • 返回 True
  • 返回 False

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

示例

 即時演示

def solve(s, w):
   n = len(w)
   char_0 = False
   char_1 = False
   for i in range(n):
      if w[i] == s:
         return True
      if s[0] == w[i][1]:
         char_0 = True
      if s[1] == w[i][0]:
         char_1 = True
      if char_0 and char_1:
         return True
   return False
s = "no"
w = ["ol", "on", "ni", "to"]
print(solve(s, w))

輸入

"no", ["ol", "on", "ni", "to"]

輸出

True

更新於: 2020-12-29

106 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告