Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสลับสูงสุดใน Python

สมมติว่าเรามีจำนวนเต็มที่ไม่ติดลบ เราสามารถสลับสองหลักได้สูงสุดหนึ่งครั้งเพื่อให้ได้จำนวนที่มีค่าสูงสุด เราต้องคืนค่าจำนวนสูงสุดที่ได้ ดังนั้นถ้าอินพุตคือ 2736 ผลลัพธ์จะเป็น 7236 ที่นี่เราสลับ 2 และ 7

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้ −

  • num := ตัดแต่ละหลักจากจำนวน และทำเป็นรายการ
  • num1 := เรียง num ในลำดับกลับ
  • index := 0
  • while index < ความยาวของ num
    • ถ้า num1[index] ไม่เท่ากับ num[index]
      • a := อาร์เรย์ย่อยของ num จาก index (index + 1) ถึงสุด
      • กลับลำดับ a
      • a := ความยาวของ a - index ของ num[index] ใน a + index + 1 - 1
      • num[index], num[a] := num[a], num[index]
      • break ลูป
    • เพิ่ม index ขึ้น 1
  • รวมตัวเลขใน num และทำให้เป็นจำนวนเต็ม
  • คืนค่าผลลัพธ์

ตัวอย่าง (Python)

มาดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น −

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))

อินพุต

5397

ผลลัพธ์

9357