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

ย้อนกลับเฉพาะตัวอักษรใน Python


สมมติว่าเรามีสตริง S เราต้องหาสตริงที่กลับด้านโดยที่อักขระทั้งหมดที่ไม่ใช่ตัวอักษรจะไม่เปลี่ยนตำแหน่งและตัวอักษรทั้งหมดกลับตำแหน่ง ดังนั้น หากสตริงที่ระบุคือ "a-bC-dEf-ghIj" ผลลัพธ์จะเป็น "j-Ih-gfE-dCba"

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

  • เราจะใช้ไลบรารีนิพจน์ทั่วไปเพื่อแก้ปัญหานี้
  • ถ้า S ว่างเปล่า ให้คืนค่า S
  • str :=สตริงว่าง index1 :=0 และ index2 :=ความยาวของ S – 1
  • ในขณะที่ index1 <ความยาวของ S
    • ถ้า index2>=0 และ S[index1] เป็นตัวอักษร และ S[index2] เป็นตัวอักษร
      • str :=str + S[ดัชนี2]
      • ลดดัชนี2 ขึ้น 1 และเพิ่มดัชนี1 ขึ้น 1
    • มิฉะนั้น ถ้า S[index1] เป็นตัวอักษร ให้ลด index2 ลง 1
    • มิฉะนั้น ถ้า S[index1] ไม่ใช่ตัวอักษร ให้ str :=str + S[index1] เพิ่ม index1 ขึ้น 1
    • มิฉะนั้น ลดดัชนี2 ขึ้น 1 และเพิ่มดัชนี1 ขึ้น 1
  • กลับ str

ตัวอย่าง

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

class Solution:
   def reverseOnlyLetters(self, S):
      if not S:
         return S
      str_= ""
      index1 = 0
      index2 = len(S)-1
      while index1<len(S):
         #print(index1,index2)
         if index2>=0 and S[index1].isalpha() and S[index2].isalpha():
            str_+=S[index2]
            index2 -= 1
            index1 += 1
         elif S[index1].isalpha():
            index2-=1
         elif not S[index1].isalpha():
            str_+=S[index1]
            index1+=1
         else:
            index2 -= 1
            index1 += 1
      return str_
ob1 = Solution()
print(ob1.reverseOnlyLetters("a-bC-dEf-ghIj"))

อินพุต

"a-bC-dEf-ghIj"

ผลลัพธ์

"j-Ih-gfE-dCba"