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
结论
在本文中,我们了解了如何检查字符串是否是两个不同字符串的有效混洗。为了检查有效性,我们必须检查混洗的字符串字符长度是否等于相同原始字符串长度的总和。然后,我们需要检查两个原始字符串连接的排序序列是否等于混洗字符串的排序值,如果是,则为有效混洗。