假设我们有一个小写的字符串;我们必须检查是否可以从中间拆分字符串,这将使两半在两侧之间至少具有一个字符的差异。它可以容纳不同的字符或每个字符的频率不同。如果字符串是奇数长度的字符串,则忽略中间元素并检查其余元素。
因此,如果输入类似于s =“ helloohekk”,则输出将为True,如“ helloohekk”,因此左侧部分为“ hello”,右侧部分为“ ohekk”左右是不同的。
为了解决这个问题,我们将遵循以下步骤-
left_freq:=一个空的映射
right_freq:=一个空的映射
n:= s的大小
对于范围在0到(n / 2)-1的商的i
left_freq [s [i]]:= left_freq [s [i]] + 1
对于i(n / 2)到n-1的商
right_freq [s [i]]:= right_freq [s [i]] + 1
对于s中的每个字符,执行
返回True
如果right_freq [char]与left_freq [char]不同,则
返回False
让我们看下面的实现以更好地理解-
from collections import defaultdict def solve(s): left_freq = defaultdict(int) right_freq = defaultdict(int) n = len(s) for i in range(n//2): left_freq[s[i]] += 1 for i in range(n//2,n): right_freq[s[i]] += 1 for char in s: if right_freq[char] != left_freq[char]: return True return False s = "helloohekk" print(solve(s))
"helloohekk"输出结果
True