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

กลับตัวอักษรภาษาอังกฤษเท่านั้นใน Python

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

วิธีการแก้ปัญหา

  • ใช้ไลบรารี regular expression ในการแก้ปัญหา
  • ถ้า S ว่าง ให้คืนค่า S
  • str := สตริงว่าง, index1 := 0 และ index2 := ความยาวของ S - 1
  • while index1 < ความยาวของ S:
    • ถ้า index2 >= 0 และ S[index1] เป็นตัวอักษร และ S[index2] เป็นตัวอักษร:
      • str := str + S[index2]
      • ลด index2 ลง 1 และเพิ่ม index1 ขึ้น 1
    • else if S[index1] เป็นตัวอักษร ให้ลด index2 ลง 1
    • else if S[index1] ไม่ใช่ตัวอักษร ให้ str := str + S[index1], เพิ่ม index1 ขึ้น 1
    • else ลด index2 ลง 1 และเพิ่ม index1 ขึ้น 1
  • คืนค่า str

ตัวอย่างโค้ด

class Solution:
    def reverseOnlyLetters(self, S):
        if not S:
            return S
        str_ = ""
        index1 = 0
        index2 = len(S) - 1
        while index1 < len(S):
            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"