在 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
- 如果 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