在 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]