สมมติว่าเรามีสองสตริง เราต้องการสร้างสตริงขั้นต่ำของคำศัพท์จากสตริงเหล่านั้น ในการสร้างสตริง เราเปรียบเทียบอักษรตัวแรกของทั้งสองสตริง และแยกอักษรที่มีขนาดเล็กกว่าตามคำศัพท์ออกจากสตริงใดสตริงหนึ่ง ในกรณีของเนคไท คือ ตัวอักษรจะเหมือนกัน เราแยกจดหมายออกจากสตริงแรก เราทำซ้ำขั้นตอนนี้จนกว่าสตริงทั้งสองจะว่างเปล่า ต้องส่งคืนสตริงขั้นต่ำที่สร้างขึ้น
ดังนั้น หากอินพุตเป็นเหมือน input_1 ='TUTORIALS', input_2 ='POINT' ผลลัพธ์จะเป็น POINTTUTORIALS
หากเราเปรียบเทียบทั้งสองสาย เราจะได้สิ่งนี้ทีละขั้นตอน -
TUTORIALS POINT TUTORIALS OINT = P TUTORIALS INT = PO TUTORIALS NT = POI TUTORIALS T = POIN TUTORIALS = POINT
เนื่องจากสตริงใดสตริงหนึ่งว่างเปล่า ตอนนี้สตริงแรกทั้งหมดจะถูกวางไว้ในสตริงขั้นต่ำที่เป็นผลลัพธ์ ดังนั้น สตริงสุดท้ายคือ POINTTUTORIALS
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- input_1 :=input_1 + "z"
- input_2 :=input_2 + "z"
- temp_1 :=0
- temp_2 :=0
- res_str :=สตริงว่าง
- ในขณะที่ temp_1 <ขนาดของ input_1 และ temp_2 <ขนาดของ input_2 ให้ทำ
- ถ้า input_1[จากดัชนี temp_1 ถึงปลายสตริง]
- res_str :=res_str + input_1[temp_1]
- temp_1 :=temp_1 + 1
- ถ้า input_1[จากดัชนี temp_1 ถึงปลายสตริง]
- มิฉะนั้น
- res_str :=res_str + input_2[temp_2]
- temp_2 :=temp_2 + 1
- res_str :=res_str + input_1[จากดัชนี temp_1 ถึงองค์ประกอบสุดท้ายที่สองของสตริง]
- res_str :=res_str + input_2[จากดัชนี temp_2 ถึงองค์ประกอบสุดท้ายที่สองของสตริง]
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(input_1, input_2): input_1 += "z" input_2 += "z" temp_1 = 0 temp_2 = 0 res_str = "" while temp_1 < len(input_1) and temp_2 < len(input_2): if input_1[temp_1:] < input_2[temp_2:]: res_str += input_1[temp_1] temp_1 += 1 else: res_str += input_2[temp_2] temp_2 += 1 res_str = res_str[:-1] if temp_1 < len(input_1): res_str += input_1[temp_1:-1] if temp_2 < len(input_2): res_str += input_2[temp_2:-1] return res_str print(solve('TUTORIALS', 'POINT'))
อินพุต
'TUTORIALS', 'POINT'
ผลลัพธ์
POINTTUTORIALS