检查字符串的两半在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

猜你喜欢