如何检查字符串中各字符的重复次数是否相等
检查字符串中所有字符的出现次数是否相等
核心思路
要判断字符串里每个字符的重复次数是否一致,核心两步走:
- 统计每个字符在字符串中的出现频率
- 验证所有频率值是否完全相同
实现方案(Python)
方案一:用内置工具快速实现
借助collections.Counter快速统计字符频率,再通过集合去重特性判断频率是否一致:
from collections import Counter def check_equal_char_counts(s): if not s: # 空字符串可根据需求调整返回值,这里默认返回True return True char_counts = Counter(s).values() # 集合长度为1说明所有频率都相同 return len(set(char_counts)) == 1 # 测试示例 print(check_equal_char_counts("abaababb")) # 输出 True print(check_equal_char_counts("addda")) # 输出 False
方案二:手动统计(适合理解底层逻辑)
如果不想用内置工具,手动遍历字符串统计频率,再逐一验证:
def check_equal_char_counts(s): if not s: return True count_map = {} # 遍历字符串统计每个字符的出现次数 for char in s: count_map[char] = count_map.get(char, 0) + 1 # 取第一个字符的次数作为基准,检查所有次数是否一致 base_count = next(iter(count_map.values())) return all(count == base_count for count in count_map.values()) # 测试同样有效 print(check_equal_char_counts("abaababb")) # True print(check_equal_char_counts("addda")) # False
补充说明
如果你的需求是允许调整个别字符的次数(比如删除一个字符后让所有次数一致),那需要在上述基础上增加额外逻辑,但针对当前需求,上面的代码已经可以完美解决问题。
内容的提问来源于stack exchange,提问作者Amir Abravesh
相关产品推荐
相关产品推荐

