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


假设我们有一个字符串 s,我们需要检查给定字符串的字符是否可以重新排列成回文。

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

为了解决这个问题,我们将遵循以下步骤:

  • freq := 一个映射,用于存储 s 中所有字符及其频率
  • odd_count := 0
  • 对于 freq 所有值的列表中的每个元素 i:
    • 如果 i 是奇数,则
      • odd_count := odd_count + 1
    • 如果 odd_count > 1,则
      • 返回 False
  • 返回 True

让我们看看下面的实现来更好地理解:

示例

 在线演示

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"

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

True

更新于:2020-12-30

1K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告