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

รูปแบบหลังจาก Double, Reverse และ Swap ใน Python


สมมติว่าเรามีตัวเลข n เราไม่พบค่าที่ n จากลำดับ ลำดับคือด้านล่าง −

  • xxxy
  • xxxxxy
  • yxxxxx
  • xyyxyy
  • xyyxyyxyyxyyyxyy
  • ...

ในการสร้างค่าถัดไป เราต้องปฏิบัติตามกฎเหล่านี้ โดยเริ่มจาก xxy เป็นเทอมแรก −

  • เมื่อเราอยู่ที่จุดเริ่มต้นของรูปแบบ ให้เพิ่มเป็นสองเท่า (เชื่อมสตริงกับตัวมันเอง)

  • เมื่อการทำงานครั้งสุดท้ายเพิ่มขึ้นเป็นสองเท่า ให้ย้อนกลับ

  • เมื่อการดำเนินการครั้งล่าสุดย้อนกลับ ให้แลกเปลี่ยน xs ทั้งหมดกับ ys และในทางกลับกัน

  • ทำซ้ำขั้นตอนเหล่านี้

ดังนั้น หากอินพุตเท่ากับ n =5 เอาต์พุตจะเป็น "yyxyyxyyxyyx"

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

  • ผม :=0
  • ret :="xxxy"
  • ในขณะที่ฉัน
  • ถ้าฉัน mod 3 เหมือนกับ 0 แล้ว
    • ret :=ret + ret
  • มิฉะนั้นเมื่อฉัน mod 3 เหมือนกับ 1 แล้ว
    • ret :=subarray ของ ret จากดัชนี 0 ถึง end-1
  • มิฉะนั้น
    • new_stringy :=สตริงว่าง
    • สำหรับแต่ละ c ใน ret ให้ทำ
      • ถ้า c เหมือนกับ "x" แล้ว
        • new_stringy :=new_stringy ต่อ "y"
      • มิฉะนั้น
        • new_stringy :=new_stringy ต่อ "x"
    • ret :=new_stringy
  • ผม :=ผม + 1
  • คืนสินค้า
  • ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

    ตัวอย่าง

    class Solution:
       def solve(self, s):
          i = 0
          ret = "xxy"
          while i < s:
             if i % 3 == 0:
                ret += ret
             elif i % 3 == 1:
                ret = ret[::-1]
             else:
                new_stringy = ""
                for c in ret:
                   if c == "x":
                      new_stringy += "y"
                   else:
                      new_stringy += "x"
                   ret = new_stringy
                i += 1
          return ret
    ob = Solution()
    print(ob.solve(5))

    อินพุต

    5

    ผลลัพธ์

    yyxyyxyyxyyx