สมมติว่าเรามีสตริงตัวพิมพ์เล็ก ภารกิจของเราคือกลับลำดับสระที่อยู่ในสตริง เช่นถ้าสตริงคือ "hello" สตริงหลังกลับสระจะเป็น "holle" สำหรับสตริง "programming" จะเป็น "prigrammong"
วิธีการแก้ปัญหา
- รับสตริงและสร้างรายการสระพร้อมเก็บดัชนีของมัน
- กลับลำดับรายการสระ
- ตั้งค่า idx := 0
- สำหรับ i := 0 ถึง ความยาวของสตริงที่กำหนด - 1:
- ถ้า i อยู่ในรายการดัชนี:
- นำ vowels[i] ไปใส่ในสตริงสุดท้าย
- idx := idx + 1
- มิฉะนั้นนำ string[i] ไปใส่ในสตริงสุดท้าย
- ถ้า i อยู่ในรายการดัชนี:
- คืนค่ารายการเป็นสตริง
ตัวอย่างโค้ด
class Solution:
def reverseVowels(self, s):
chars = list(s)
index = []
vowels = []
for i in range(len(chars)):
if chars[i] in ['a','e','i','o','u']:
vowels.append(chars[i])
index.append(i)
vowels = vowels[::-1]
final = []
ind = 0
for i in range(len(chars)):
if i in index:
final.append(vowels[ind])
ind += 1
else:
final.append(chars[i])
str1 = ""
return str1.join(final)
ob1 = Solution()
print(ob1.reverseVowels("hello"))
print(ob1.reverseVowels("programming"))
อินพุต
"hello" "programming"
เอาต์พุต
holle prigrammong