在 Python 中检查字符串的两半是否至少有一个不同的字符

pythonserver side programmingprogramming

假设我们有一个小写字符串;我们必须检查是否可以从中间分割字符串,这样两半之间至少有一个字符的差异。它可能包含不同的字符或每个字符的不同频率。如果字符串是奇数长度的字符串,则忽略中间元素并检查其余元素。

因此,如果输入为 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
  • 对于 (n/2) 到 n - 1 的商范围内的 i,执行
    • right_freq[s[i]] := right_freq[s[i]] + 1
  • 对于 s 中的每个字符,执行
    • 如果 right_freq[char] 与 left_freq[char] 不同,则
      • 返回 True
  • 返回 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

相关文章