检查给定字符串的字符是否可以重新排列以在 Python 中形成回文

假设我们有一个字符串 s,我们必须检查给定字符串的字符是否可以打乱以形成回文。

因此,如果输入类似于 s = "raaecrc",那么输出将为 True,因为我们可以将其重新排列为“racecar”,这是一个回文。

为了解决这个问题,我们将按照以下步骤操作 -

  • freq := 将所有字符及其频率存储在 s 中的映射

  • 奇数:= 0

  • 对于 freq 的所有值列表中的每个元素 i,执行

    • 返回错误

    • 奇数:= 奇数 + 1

    • 如果我是奇数,那么

    • 如果odd_count > 1,则

    • 返回真

    让我们看看以下实现以获得更好的理解 -

    示例

    from collections import defaultdict
    def solve(st) :
       freq = defaultdict(int)
       for char in st :
          freq[char] += 1
       odd_count = 0
       for i in freq.values():
          if i % 2 == 1:
             odd_count = odd_count + 1
          if odd_count > 1:
             return False
       return True
    s = "raaecrc"
    print(solve(s))

    输入

    "raaecrc"
    输出结果
    True

    猜你喜欢