-1
長さ3の部分文字列の式がちょうど1つのc
文字を含むかどうかを確認しようとしています。つまり、文字列内の長さ3のすべての部分文字列には、c
文字を含める必要があります。たとえば、正規表現を使用して文字列のサブシーケンスを確認する
などの文字列:"a", "cc", "bbc", "cabcbbca", "acaacbacbb", "abcabcabc"
などのすべての文字列は、長さ3の部分文字列に1つだけ含まれます。部分文字列の長さが2未満の場合は、関係なく有効です。
ただし、"caaa", "bbcaacbcaac"
などの文字列は、長さ3の部分文字列が含まれており、正確に1つの文字が含まれていないため、この要件を満たしていません。c
文字。元のリストから有効な式を['a', 'cc', 'bbc', 'cabcbbca', 'acaacbacbb', 'abcabcabc']
返し
# Testing expressions
expressions = ["a", "cc", "bbc", "cabcbbca", "acaacbacbb", "abcabcabc",
"caaa", "bbcaacbcaac"]
# Getting substrings of a certain length
def get_substrings(string, sublen):
substrs = []
for i in range(len(string)):
if len(string[i:i+sublen]) == sublen:
substrs.append(string[i:i+sublen])
return substrs
# extracting valid expressions
def get_valid_expression(expressions, minlen, char_to_check):
valid = []
for string in expressions:
# if string is less than min length, then it is already valid
if len(string) < minlen:
valid.append(string)
else:
# get the subtrings
lst = get_substrings(string, minlen)
# Check if the substring contains exactly one of the characters
if all(substring.count(char_to_check) == 1 for substring in lst):
valid.append(string)
return valid
print("Valid expressions with all substrings of length 3 containing exactly one c:")
print(get_valid_expression(expressions, 3, "c"))
:
は、これまでのところ、私はこれをチェックする迅速なPythonプログラムを作りました。私はこれを行うことができます正規表現で彼らの方法ですか?私はこれを検索する正規表現を生成すると良いと多くのコードを必要としないと思う。
あなたの条件言い替えるするには、次の文字列にすべてのCさんが持っている必要があります次の前のcと最初と最後のcの間の正確に2文字の距離は、文字列の開始と終了のそれぞれに0〜2文字の距離を持たなければなりません。 –
@MichaelButscherはい、それはおそらくそれを置くためのより良い方法です。 – RoadRunner