华为od机试B卷【字符串变换最小字符串】

该博客讨论了华为在线开发者(OD)机试中的一道字符串处理问题。题目要求通过一次交换字符串中任意两个不同位置的字符,找到字典序最小的字符串。博主给出了输入输出描述、示例及解决方案。
摘要由CSDN通过智能技术生成

目录

题目

思路

code


题目

给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。

变换规则:交换字符串中任意两个不同位置的字符。

输入描述:

一串小写字母组成的字符串s 输出描述:

按照要求进行变换得到的最小字符串

备注:

s是都是小写字符组成

1<=s.length<=1000

示例1

输入:

abcdef

输出:

abcdef

说明:

abcdef已经是最小字符串,不需要交换

示例2

输入:

bcdefa

输出:

acdefb

说明:

a和b进行位置交换,可以得到最小字符串

思路

code

var fn = function 
题目要求编写一个函数,对于给定字符串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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值