2023华为od机试B卷Python【字符串的摘要】

这篇博客介绍了如何使用Python实现华为OD机试中的字符串摘要规则。规则包括删除非字母符号,处理连续相同字母,以及根据特定规则排序输出。文章提供了示例输入输出和代码实现。
摘要由CSDN通过智能技术生成

前言

本题使用python解答,如果需要Java版本,请参考:
点我

题目

现规定一个摘要规则,用于对特定字符串生成摘要。规则如下:
1、如果是非字母符号,直接删除。
2、如果有连续相同的字母 (同一个字母的大写和小写算作同一个字母) ,则输出: 小写字母 + 连续出现的次数
3、如果不是连续的字母,则输出: 小写字母之后字符串中出现的该字符的次数
4、现将字符串按照以上规则排列,然后进行排序: 字母和紧随的数字作为一组进行排序,数字大的在前,数字相同的则按字母进行排序,字母小的在前。
输入描述:
行字符串,长度为[1,200]

输出描述:
摘要字符串

示例

输入:
aabbcc
输出:
a2b2c2

说明:
第一个b非连续字母,该字母之后字符串中还出现了2次 (最后的两个Bb) ,所以输出b2a连续出现3次,输出a3,c非连续,该字母之后字符串再没有出现过c,输出c0Bb连续2次,输出b2,对b2a3c0b2

题目要求编写一个函数,对于给定的字符串s,将相邻重复的字用它们的个数和字本身表示。 例如,给定字符串s = "aaabbbccc",函数应该返回字符串"3a3b3c"。 要解决这个问题,我们可以使用两个指针来遍历字符串一个指针指向当前字,另一个指针用来记录重复字的个数。当遇到不同的字或遍历到字符串末尾时,将重复字的个数和字本身添加到结果字符串中。 具体步骤如下: 1. 初始化一个字符串result,用来存放结果。 2. 设置两个指针,一个指向当前字指针cur,一个用来记录重复字的指针count,初始值为1。 3. 从第二个字开始,遍历整个字符串。 4. 如果当前字等于前一个,则将count加1。 5. 如果当前字不等于前一个,则将重复字的个数count和前一个添加到result中,并将count重置为1。 6. 遍历结束后,将最后一个和重复字的个数count添加到result中。 7. 返回结果字符串result。 以下是具体的实代码: ```python def enhance_string(s): result = "" cur = 0 count = 1 for i in range(1, len(s)): if s[i] == s[cur]: count += 1 else: result += str(count) + s[cur] cur = i count = 1 result += str(count) + s[cur] return result ``` 测试样例: ```python s = "aaabbbccc" print(enhance_string(s)) # 输出"3a3b3c" ``` 通过以上步骤,我们可以成功地将字符串中的相邻重复字替换为它们的个数和字本身。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值