在 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

回到顶部