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

DI String Match ใน Python


สมมติว่าเรามีสตริง S ที่มีเฉพาะ "I" (เพื่อแสดงถึงการเพิ่มขึ้น) หรือ "D" (เพื่อแสดงถึงการลดลง) ให้ N =ขนาดของ S เราต้องคืนค่าการเรียงสับเปลี่ยน A ของ [0, 1, ... , N] เช่นนั้นสำหรับ i ทุกคนในช่วง 0, ..., N-1 −

  • ถ้า S[i] คือ "I" ดังนั้น A[i]
  • มิฉะนั้น เมื่อ S[i] คือ "D" แล้ว A[i]> A[i+1]

ดังนั้นหากอินพุตเป็นเหมือน "IDID" เอาต์พุตจะเป็น [0,4,1,3,2]

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

  • A :=รายการตั้งแต่ 0 ถึง N โดยที่ N คือขนาดของ S
  • res =รายการว่าง
  • สำหรับแต่ละองค์ประกอบ j ใน S ให้ทำ
    • ถ้า j คือ I ให้ลบองค์ประกอบสุดท้ายจาก A แล้วแทรกลงใน res
    • มิฉะนั้น ให้ลบองค์ประกอบแรกของ A แล้วแทรกลงใน res
  • ผลตอบแทน

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

ตัวอย่าง

class Solution:
   def diStringMatch(self, S):
      A=[i for i in range(len(S)+1)]
   return [A.pop((j=='I')-1) for j in S]+A
ob = Solution()
print(ob.diStringMatch("IDID"))

อินพุต

"IDID"

ผลลัพธ์

[0, 4, 1, 3, 2]