สมมติว่าเรามีรหัสไปรษณีย์เราต้องตรวจสอบว่าถูกต้องหรือไม่ รหัสไปรษณีย์ที่ถูกต้องมีเกณฑ์ดังต่อไปนี้
-
ต้องเป็นตัวเลขในช่วง 100000 ถึง 999999 (รวมทั้งสองอย่าง)
-
ต้องไม่มีคู่หลักที่ซ้ำกันมากกว่าหนึ่งคู่
ดังนั้น หากอินพุตเป็น s ="700035" เอาต์พุตจะเป็น True เนื่องจากอยู่ในช่วง 100000 ถึง 999999 และไม่มีตัวเลขต่อเนื่องกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- n :=ขนาดของ s
- nb :=0
- โอเค :=จริง
- สำหรับฉันในช่วง 0 ถึง n - 1 ทำ
- ok :=ok และ s[i] เป็นตัวเลข จากนั้น
- สำหรับฉันในช่วง 0 ถึง n-3 ทำ
- nb :=nb + (1 ถ้า s[i] เหมือนกับ s[i+2] มิฉะนั้น 0)
- ผลตอบแทน (จริงเมื่อตกลงเป็นจริงและ n เหมือนกับ 6 และ s[0] ไม่เหมือนกับ '0' และ nb <2) มิฉะนั้นจะคืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def Solve(s):n =len(s) nb =0 ok =True for i in range(n):ok =ok and s[i].isdigit() for i in range(n-2) :nb +=s[i] ==s[i+2] return ok และ n ==6 และ s[0] !='0' and nb <2s ="700035"print(solve(s))ก่อน>อินพุต
"700035"ผลลัพธ์
จริง