Computer >> Máy Tính >  >> Lập trình >> Python

Hoán đổi tối đa trong Python


Giả sử chúng ta có một số nguyên không âm; chúng ta có thể hoán đổi hai chữ số cùng một lúc để nhận được số có giá trị lớn nhất. Chúng tôi phải trả lại số có giá trị lớn nhất mà chúng tôi có thể nhận được. Vì vậy, nếu đầu vào là 2736 thì đầu ra sẽ là 7236. Vì vậy, ở đây chúng ta đang hoán đổi 2 và 7.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • num:=cắt từng chữ số khỏi số và tạo danh sách
  • num1:=sắp xếp num theo thứ tự ngược lại
  • chỉ mục:=0
  • while chỉ mục <độ dài của num
    • nếu num1 [chỉ mục] không giống với num [chỉ mục]
      • a:=mảng con của num từ chỉ mục (chỉ mục + 1) đến cuối
      • đảo ngược một
      • a:=length of a - index of num [index] of a + index + 1 - 1
      • num [index], num [a]:=num [a], num [index]
      • phá vỡ vòng lặp
    • tăng chỉ số thêm 1
  • nối các số có trong num và biến nó thành số nguyên
  • trả về kết quả.

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

class Solution:
   def maximumSwap(self, num):
      num = list(map(int,list(str(num))))
      num1 = sorted(num,reverse=True)
      index=0
      while index<len(num):
         if num1[index]!=num[index]:
            a = num[index+1:]
            a.reverse()
            a=len(a) - a.index(num1[index])+index+1 -1
            num[index],num[a] = num[a],num[index]
            break
         index+=1
      return int("".join(str(x) for x in num))
ob1 = Solution()
print(ob1.maximumSwap(5397))

Đầu vào

5397

Đầu ra

9357