สมมติว่าเรามีตัวเลขเริ่มต้นและสิ้นสุดสองหมายเลข เราต้องหารายการจำนวนเต็มที่เรียงตามลำดับ เพื่อให้ทุกหมายเลข e ในช่วง [เริ่มต้น, สิ้นสุด] ทั้งที่รวมและตัวเลขของ e เพิ่มขึ้นต่อเนื่องกัน ตัวอย่างการเพิ่มจำนวนอย่างต่อเนื่องคือ 5678 แต่ 169 ไม่ใช่
ดังนั้น หากอินพุตเป็นเหมือน start =10 end =150 เอาต์พุตจะเป็น [12, 23, 34, 45, 56, 67, 78, 89, 123]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- s :=ทั้งหมด 9 หลักเป็นสตริง "123456789"
- a :=รายการใหม่
- สำหรับ i ในช่วง 0 ถึง 8 ให้ทำ
- สำหรับ j ในช่วง i + 1 ถึง 9 ทำ
- x :=(สตริงย่อยของ s จากดัชนี i ถึง j-1) เป็นตัวเลข
- ถ้าเริ่ม <=x <=สิ้นสุด แล้ว
- แทรก x ลงใน a
- สำหรับ j ในช่วง i + 1 ถึง 9 ทำ
- จัดเรียงรายการ a และส่งคืน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(start, end): s = "123456789" a = [] for i in range(9): for j in range(i + 1, 10): x = int(s[i:j]) if start <= x <= end: a += (x,) return sorted(a) start = 10 end = 150 print(solve(start, end))
อินพุต
10, 150
ผลลัพธ์
[12, 23, 34, 45, 56, 67, 78, 89, 123]