问题描述
如果同时满足以下两个条件,则表示该字符串是平衡的:
a和c的总和是偶数 b和d的总数是偶数。
示例:abcd是平衡字符串,而abc是不平衡字符串。
需要一个正则表达式来匹配平衡的字符串。 尝试过此正则表达式,但在少数情况下不起作用,失败并显示StackOverflowError “ ^(?=(?:(?:[ac] [bd]){2}) [ac] $)(?:(?:[bd] [ac]){2}) [bd] $“
解决方法
一种方法可能是将输入字符串的长度与删除了a|c
和b|d
的长度进行比较,并断言这种差异是均匀的:
def isBalanced(inp):
if (len(inp) - len(re.sub(r'a|c','',inp))) % 2 == 0 and
(len(inp) - len(re.sub(r'b|d',inp))) % 2 == 0:
return True
else:
return False
print(isBalanced("abcd")) # True
print(isBalanced("abc")) # False
print(isBalanced("aabbcccd")) # False
,
您会考虑使用函数而不是正则表达式吗?您可以将其应用于每个单词,然后返回正确的单词:
def check_balanced(string_):
a_c = string_.count('a') + string_.count('c')
b_d = string_.count('b') + string_.count('d')
if (a_c*b_d)%4 == 0:
return True
else:
return False