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

ย้ายช่องว่าง (Spaces) ไปหน้าสตริงใน Python ด้วย Single Traversal

เรามีสตริง และต้องการย้ายช่องว่างทั้งหมดไปอยู่หน้าสตริง (Front) ในการเดินทางครั้งเดียว (Single Traversal)

ตัวอย่าง

Input: "tutorials point "
Output: "  tutorialspoint"  (ช่องว่าง 2 ช่องอยู่หน้า)

Input: "I am a python programmer."
Output: "   Iamapythonprogrammer." (ช่องว่าง 3 ช่องอยู่หน้า)

อัลกอริทึม

1. กำหนดสตริง
2. ดึงตัวอักษรที่ไม่ใช่ช่องว่างเก็บไว้ (list comprehension)
3. นับจำนวนช่องว่างด้วย str.count(' ')
4. สร้างสตริงใหม่: ' ' * จำนวนช่องว่าง + ตัวอักษรที่ไม่ใช่ช่องว่าง
5. พิมพ์ผลลัพธ์

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

string = "tutorials point "

# ตัวอักษรที่ไม่ใช่ช่องว่าง
chars = [char for char in string if char != " "]

# นับช่องว่าง
spaces_count = string.count(' ')

# สร้างสตริงใหม่: ช่องว่างอยู่หน้า + ตัวอักษรอื่นๆ
new_string = " " * spaces_count + "".join(chars)

print(repr(new_string))

ผลลัพธ์

'  tutorialspoint'

ตัวอย่างที่ 2

string = "I am a python programmer."

chars = [char for char in string if char != " "]
spaces_count = string.count(' ')
new_string = " " * spaces_count + "".join(chars)

print(repr(new_string))

ผลลัพธ์

'   Iamapythonprogrammer.'

สรุป

วิธีนี้ใช้ list comprehension กรองตัวอักษร และ count() นับช่องว่าง แล้วรวมกัน ใช้เวลา O(n) และเดินทางผ่านสตริงครั้งเดียว (single traversal สำหรับ list comprehension) หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น