华为OD---字符串变换最小字符串

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

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

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

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

备注
s是都是小写字符组成
1 ≤ s.length ≤ 1000
用例1
输入
abcdef
输出
abcdef
说明
abcdef已经是最小字符串,不需要交换。

用例2
输入
bcdefa
输出
acdefb
说明
a和b进行位置交换,可以得到最小字符串

def change_str(s1,s2):
    for i in range(len(s1)):
        if s1[i]!=s2[i]:
            change_index=i
            break
    else:
        return ''.join(s1)

    min_index=change_index
    for j in range(change_index,len(s)):
        if s1[j]<=s1[min_index]:
            min_index=j
    temp=s1[change_index]
    s1[change_index]=s1[min_index]
    s1[min_index]=temp
    return ''.join(s1)
s=input()
s1=list(s)
s2=sorted(s)
s=change_str(s1,s2)
print(s)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值