检查是否可以使用 Python 中的给定约束从另一个字符串形成一个字符串
假设我们有两个小写字符串s和t。我们必须检查是否可以使用以下约束从s生成t-
t的字符在s中,例如如果t中有两个'a',那么s也应该有两个'a'。
当t中的任何字符不在s中时,检查前两个字符(前两个ASCII值)是否在s中。例如,如果'f'在t中但不在s中,那么'd'和'e'可以从s中生成'f'。
因此,如果输入类似于s="pghn"t="pin",那么输出将为True,因为我们可以从'g'和'h'生成'i'以生成“pin”。
让我们看看以下实现以获得更好的理解-
示例
from collections import defaultdict def solve(s, t): freq = defaultdict(lambda:0) for i in range(0, len(s)): freq[s[i]] += 1 for i in range(0, len(t)): if freq[t[i]]: freq[t[i]] -= 1 elif (freq[chr(ord(t[i]) - 1)] and freq[chr(ord(t[i]) - 2)]): freq[chr(ord(t[i]) - 1)] -= 1 freq[chr(ord(t[i]) - 2)] -= 1 else: return False return True s = "pghn" t = "pin" print(solve(s, t))
输入
"pghn", "pin"
输出结果
True