python-3.x - Python 连续字符
问题描述
如果给定一个字符串,则仅当字符连续重复超过 3 次时才用该字符重复的次数替换该字符,如下所示
输入:aaaa 输出:5Za
输入:addeeeeuyyyyy 输出:add4Zeu5Zy
尝试如下:
>>> from itertools import groupby
>>> strs="aaaaa"
>>> [[k, len(list(g))] for k, g in groupby(strs)]
[['a', 5]]
>>>
解决方案
你得到了很好的一部分 - 你需要实现仅缩写出现 4 次以上的连续字母的限制,并将其添加'Z'
到输出中。
你可以这样做:
from itertools import groupby
def run_length_encode(data):
result = []
for letter,amount in ( (k, len(list(g))) for k, g in groupby(data)):
result.append(letter*amount if amount < 4 else f'{amount}Z{letter}')
return ''.join(result)
data = "someaaaaabbbcdccdd"
print(data, run_length_encode(data), sep = "=>" )
输出:
someaaaaabbbcdccdd => some5Zabbbcdccdd
您可以在此相关帖子中找到更多解决方案(正则表达式 fe):
推荐阅读
- node.js - 使用 node.js 的 Keyclok Rest API
- node.js - 如何使用 mongoose 的 findOneAndUpdate 方法更新嵌入对象的某些字段而不丢失其他字段?
- javascript - 如何使用类访问 div 元素并使用反应将弹出窗口附加到它?
- python - 将一列转换为多列
- database - 查询可以推断出 subClassOf 吗?
- asp.net-core - XUnit 与 Identityserver 的集成测试:从 Identityserver 收到的令牌无法匹配密钥
- javascript - React-Bootstrap 基于断点的每行列的可变数量
- sql-server - SQL XML - 从 SQL Server 为发票创建一个 XML 文件,包括一个 XML 文件中的发票位置
- android - Flutter Android:HostnameVerifier 接口的不安全实现
- java - FeignClient 可以解码响应