字符串只有可能有 A、B、C 三个字母组成,如果任何紧邻的三个字母相同就非法。求长度为 n 的
合法字符串有多少个?其中,n 可以由用户输入字符串只有可能有 A、B、C 三个字母组成,如果任何紧邻的三个字母相同就非法。求长度为 n 的
合法字符串有多少个?其中,n 可以由用户输入字符串只有可能有 A、B、C 三个字母组成,如果任何紧邻的三个字母相同就非法。求长度为 n 的
合法字符串有多少个?其中,n 可以由用户输入字符串只有可能有 A、B、C 三个字母组成,如果任何紧邻的三个字母相同就非法。求长度为 n 的
合法字符串有多少个?其中,n 可以由用户输入
def func(s:str):
for i in range(0,len(s)-1):
if s[i] == s[i+1]:
return False
return True
def foo(s:str,n:int):
count_ = 0
for i in range(0,len(s)-n):
if func(s[i,i+n]:
count_ += 1
return count_
if name == "main":
s = input("请给定字符串")
n = int(input("请给定长度")
print(foo(s,n))
我有一个仅针对于你这个问题的解法。将非法的可能性列出,然后判断是否在里面。
对于扩展后的,建议用正则判断,非常简单。
手上没电脑,也只能口嗨一下了。
import itertools
x = ['A','B','C']
n = int(input("N: "))
count = 0
total = 0
for p in itertools.product(x, repeat=n):
p =''.join(p)
print(p, end=' ')
total+=1
if "AAA" not in p and "BBB" not in p and "CCC" not in p:
count+=1
print("\nTotal: ", total)
print("Total valid: ", count)
输入3,输出:
N: 3
AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA BAB BAC BBA BBB BBC BCA BCB BCC CAA CAB CAC CBA CBB CBC CCA CCB CCC
Total: 27
Total valid: 24