程序对两个字符串进行分区,以使每个分区在Python中形成点字符号
假设我们有两个长度相同的非空字符串s和t。我们必须将它们划分为子字符串,以使每对s和t子字符串的大小相同,并且它们是彼此的字谜。现在找到切割索引,以使切割的最大次数为s和t。如果未找到结果,则返回空列表。
因此,如果输入类似于s=“bowcattiger”t=“owbactietgr”,则输出将为[0,3,5,6,10],因为我们可以将字符串分成5个分区,每个字符串都是彼此的字谜。s=[“bow”,“ca”,“t”,“tige”,“r”],t=[“owb”,“ac”,“t”,“ietg”,“r”]
为了解决这个问题,我们将遵循以下步骤-
间隔:=一个新列表
cs:=包含以s表示字符及其频率的映射
ct:=带有t出现的字符及其频率的映射
如果cs与ct不同,则
返回新列表
对于x在s-1到0范围内的大小,执行
在间隔末尾插入x
cs[s[x]]:=cs[s[x]]-1
ct[t[x]]:=ct[t[x]]-1
如果cs与ct相同,则
排序列表间隔并返回
让我们看下面的实现以更好地理解-
示例
from collections import Counter class Solution: def solve(self, a, b): intervals = [] ca = Counter(a) cb = Counter(b) if ca != cb: return [] for x in reversed(range(len(a))): ca[a[x]] -= 1 cb[b[x]] -= 1 if ca == cb: intervals.append(x) return sorted(intervals) ob = Solution() s = "bowcattiger" t = "owbactietgr" print(ob.solve(s, t))
输入值
"bowcattiger", "owbactietgr"
输出结果
[0, 3, 5, 6, 10]