在 Python 中查找平方数组数量的程序
假设我们要制作一个小写字母的目标字符串。首先,我们将序列设为 n '?' 标记(n 是目标字符串的长度)。我们也有小写字母的邮票。在每一轮,我们都可以将图章放在序列上,并用该图章中的相应字母替换 中的每个字母。您最多可以转 10 * n 圈。
例如考虑初始序列是“???”,并且标记是“abc”,那么我们可以在第一个中创建像“abc??”、“?abc?”、“??abc”这样的字符串转动。如果序列可以标记,则返回一个索引数组,最左边的字母在每一圈都被标记。如果这是不可能的,则返回一个空数组。所以当序列是“ababc”,并且戳记是“abc”时,那么答案可以像[0, 2],因为我们可以像“?????”这样的形式 -> "abc??" - > “ababc”。
因此,如果输入类似于 s = "abcd" t = "abcdbcd",那么输出将是 [3,0]
示例
让我们看下面的实现来更好地理解
def solve(s, t):if len(s) == 1:
return [i for i in range(len(t))] if all(t==s[0] for t in t)else []
ans = []
while t != "?" * len(t):
tmp = t
for i in range(len(s)):
for j in reversed(range(i+1, len(s)+1)):
search = "?" * i + s[i:j] + "?" * (len(s)-j)
while t.find(search) != -1:
ans.append(t.find(search))
t = t.replace(search, "?"*len(s), 1)
if t == "?" * len(t): break
if t == "?" * len(t): break
if tmp == t: return []
return ans[::-1]
s = "abcd"
t = "abcdbcd"
print(solve(s, t))
输入
"abcd", "abcdbcd"输出结果
[3,0]
以上是 在 Python 中查找平方数组数量的程序 的全部内容, 来源链接: utcz.com/z/338689.html