检查字符串的两半在Python中是否至少有一个不同的字符
假设我们有一个小写的字符串;我们必须检查是否可以从中间拆分字符串,这将使两半在两侧之间至少具有一个字符的差异。它可以容纳不同的字符或每个字符的频率不同。如果字符串是奇数长度的字符串,则忽略中间元素并检查其余元素。
因此,如果输入类似于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