程序,可在Python中一键查找按字典顺序最小的字符串

假设我们有一个字符串s,如果我们可以在给定字符串s中的两个字符之间最多进行一次交换,则必须找到在字典上最小的字符串。

因此,如果输入类似于“ zyzx”,则输出将为“ xyzz”

为了解决这个问题,我们将遵循以下步骤-

  • temp:=一个大小为s的数组,并用0填充

  • m:= s的大小-1

  • 对于范围s -1至-1的i,将其减小1,

    • a:= temp [i]

    • 如果s [a]与s [i]不同,则

    • 返回s的子字符串[从索引0到i]并置s [a]并置s的子字符串[从索引i + 1到a]并置s [i]并置s的子字符串[从索引a + 1到末尾]

    • m:=我

    • 如果s [i] <s [m],则

    • temp [i]:= m

    • 对于0到s大小的范围内的i,执行

    • 返回s

    示例

    class Solution:
       def solve(self, s):
          temp = [0]*len(s)
          m=len(s)-1
          for i in range(len(s)-1, -1, -1):
             if s[i]<s[m]: m=i
                temp[i] = m
          for i in range(len(s)):
             a = temp[i]
             if s[a] != s[i]:
                return s[:i]+s[a]+s[i+1:a]+s[i]+s[a+1:]
          return s
    ob = Solution()print(ob.solve("zyzx"))

    输入值

    zyzx

    输出结果

    xyzz
    猜你喜欢