Python程式:檢查字串是否為兩個不同字串的有效混排


在Python中,我們可以使用內建函式,例如len()和邏輯運算子來檢查結果字串中字元的順序,從而判斷一個字串是否為兩個不同字串的有效混排。兩個不同字串的有效混排是指,透過混合兩個不同字串的字元來形成一個字串,同時保持這兩個原始字串中字元的順序。Python提供了各種內建函式來處理字串。在本文中,我們將使用Python來檢查由兩個不同字串的字元混排而成的字串是否有效。

演示

讓我們來看一個例子來理解字串的有效混排。假設有兩個字串:

S1 : abc
S2 : def 

s1 和 s2 的有效混排將是 − “adbecf”, “dabecf”

s1 和 s2 的無效混排將是 − “abgfcd”, “tabcde”

字串 “abgfcd”“tabcde” 排序後與兩個原始字串連線後的排序結果不匹配。

演算法

  • 步驟1 − 檢查兩個不同字串連線後的長度是否等於結果混排字串的長度。如果不相等,則返回false,否則繼續步驟2。

  • 步驟2 − 對兩個原始字串的連線進行排序。

  • 步驟3 − 對混排字串進行排序。

  • 步驟4 − 檢查排序後的混排字串是否等於排序後的原始字串連線結果。如果匹配,則返回True,否則返回false。

示例1

在下面的例子中,我們將建立一個is_valid_shuffle()函式,該函式將檢查混排字串是否有效。為此,我們首先檢查混排字串的長度是否等於原始字串s1和s2的長度之和,否則返回false。如果字串長度相等,則我們檢查兩個原始字串連線後的排序序列與混排字串是否匹配。如果兩個字串匹配,則它是一個有效的混排,否則它不是一個有效的混排。

要檢查is_valid_shuffle函式,我們按如下方式傳遞字串:

S1: abc
S2: def
Result : “adbecf”
def is_valid_shuffle(str1, str2, result):
   if len(str1) + len(str2) != len(result):
      return False

   newstr = str1+str2
   newstr = sorted(newstr)
   shuffle_string = sorted(result)
   if shuffle_string != newstr:
      return False
   else:
      return True

str1 = "abc"
str2 = "def"
result = "adbecf"
print(is_valid_shuffle(str1, str2, result))

輸出

True

示例2

另一個例子是檢查is_valid_shuffle是否識別無效字串,我們可以按如下方式傳遞字串和結果字串:

S1: abc
S2: def
Result: “adebcf”
def is_valid_shuffle(str1, str2, result):
   if len(str1) + len(str2) != len(result):
      return False

   newstr = str1+str2
   newstr = sorted(newstr)
   shuffle_string = sorted(result)
   if shuffle_string != newstr:
      return False
   else:
      return True

str1 = "abc"
str2 = "def"
result = "daehfc"
print(is_valid_shuffle(str1, str2, result))

輸出

False

結論

在本文中,我們瞭解瞭如何檢查字串是否為兩個不同字串的有效混排。要檢查有效性,我們必須檢查混排字串的字元長度是否等於相同原始字串長度的和。然後,我們需要檢查兩個原始字串連線後的排序序列是否等於混排字串的排序值,如果是,則它是一個有效的混排。

更新於:2023年4月17日

431 次瀏覽

開啟你的職業生涯

完成課程獲得認證

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