华为OD机试真题-字符串变换最小字符串-Python-OD统一考试(C卷)

题目描述:

给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。

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

输出描述:按照要求进行变换得到的最小字符串

补充说明:s是都是小写字符组成
                  1<=s.length<=1000

示例 

示例1

输入:abcdef

输出:abcdef

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

示例2

输入:bcdefa

输出:acdefb

说明:a和b进行位置交换,可以等到最小字符串
 

str = input()

indexmin = -1

min = float('inf')

i = 0
while i < len(str) - 1 and str[i] <= str[i + 1]:
    i += 1

j = i + 1
if j >= len(str):
    print(str)
    exit()

for i in range(j, len(str)):
    if str[i] <= min:
        indexmin = i
        min = str[i]

for i in range(len(str)):
    if str[indexmin] < str[i]:
        str = str[:indexmin] + str[i] + str[indexmin+1:i] + str[indexmin] + str[i+1:]
        break

print(str)

 

你可能感兴趣的:(华为od,python,开发语言)