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

ค่าสวอปสูงสุดใน Python


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

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

  • num :=ตัดแต่ละหลักออกจากตัวเลข แล้วสร้างรายการ
  • num1 :=เรียงลำดับตัวเลขย้อนกลับ
  • ดัชนี :=0
  • ในขณะที่ดัชนี <ความยาวของ num
    • ถ้า num1[index] ไม่เหมือนกับ num[index]
      • a :=subarray ของ num จากดัชนี (index + 1) ถึงจุดสิ้นสุด
      • ย้อนกลับ
      • a :=ความยาวของ a – ดัชนีของ num[index] ของ a + ดัชนี + 1 – 1
      • num[index], num[a] :=num[a], num[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