Python实现:O(n)复杂度判断小写字母串能否经一次交换成周期串
以下是一个使用 Python 实现的解决方案,时间复杂度为 `O(n)` : ```python def can_form_period(s): n = len(s) count = [0] * 26 # 用于记录每个字母出现的次数 for c in s: count[ord(c) - ord('a')] += 1 odd_count = 0 # 统计出现奇数次的字母个数 for freq in count: if freq % 2!= 0: odd_count += 1 # 如果出现奇数次的字母个数 <= 1,则可以形成周期 return odd_count <= 1 s = "abbccc" print(can_form_period(s)) ``` 这个算法首先统计每个字母出现的次数,然后统计出现奇数次的字母个数。如果奇数次的字母个数小于等于 1,那么就可以通过交换操作(如果有的话)使得字符串变成一个周期。 其时间复杂度主要取决于字符串的长度 `n` ,遍历字符串和统计次数的操作都是 `O(n)` ,因此总的时间复杂度为 `O(n)` 。 ######[AI写代码神器 | 251点数解答 | 2024-10-13 15:10:03]
相关提问
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)462
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- C++ 实现:从键盘读入字符并判断其类型(大写、小写或数字)(字节豆包 | 462点数解答 | 2026-01-24 20:21:46)40
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)61
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)417
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)409
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- Python 实现超有趣大鱼吃小鱼游戏,从初始 1 级开启进化之旅!( | 767点数解答 | 2024-05-31 11:50:29)251
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)254
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)394
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)417
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)529