กำหนดจำนวนเต็ม N ให้แทนที่เลข 0 ทุกตัวที่ปรากฏในตัวเลขด้วย '5' อย่างไรก็ตาม เลข 0 นำหน้า (leading zeros) ไม่สามารถแทนที่ได้ เพราะจะถูกตัดทิ้ง ตัวอย่างเช่น
อินพุต-1 -
N = 1007
เอาต์พุต -
1557
คำอธิบาย - ตัวเลขที่กำหนดมี 0 อยู่ 2 ตัว เมื่อแทนที่ด้วย 5 จะได้ 1557
อินพุต-2 -
N = 00105
เอาต์พุต -
155
คำอธิบาย - เนื่องจากตัวเลขเริ่มต้นด้วย 0 นำหน้า ซึ่งจะถูกละเว้น และผลลัพธ์หลังแทนที่ 0 กลางด้วย 5 คือ 155
แนวทางแก้ปัญหา
เพื่อแทนที่ 0 ทั้งหมดในตัวเลขที่กำหนดด้วย '5' เราสามารถหาหลักสุดท้ายของตัวเลขได้ หากหลักสุดท้ายเป็น '0' ให้เปลี่ยนเป็น '5' และดึงหลักถัดไป อย่างไรก็ตาม 0 นำหน้าต้องถูกละเว้น ดังนั้นเราจะดึงหลักสุดท้ายก่อน แล้วเรียกฟังก์ชันซ้ำเพื่อดึงหลักอื่นๆ
รับค่าตัวเลข N
ฟังก์ชัน Integer convertToFive(int N) รับตัวเลขและคืนค่าตัวเลขที่แก้ไขแล้ว
ถ้าหลักสุดท้ายเป็น '0' ให้แทนที่ด้วย '5'
คืนค่าฟังก์ชันเวียนเกิดที่รับหลักถัดไปโดยการหาร 10 และคูณ 10
คืนค่าผลลัพธ์ที่ดึงหลักสุดท้ายมาบวกเข้าด้วยกัน
ตัวอย่าง
def convertToFive(number):
number += calculateAddedValue(number)
return number
def calculateValue(number):
result = 0
placeValu = 1
if (number == 0):
result += (5 * placeValue)
while (number > 0):
if (number % 10 == 0):
result += (5 * placeValue)
number //= 10
placeValue *= 10
return result
print(convertToFive(14006))
ผลลัพธ์
การรันโค้ดจะได้ผลลัพธ์ดังนี้
14556
เนื่องจาก มี 0 อยู่ 2 ตัว ในตัวเลขที่กำหนด หลังจากแทนที่ตัวเลข 14006 จะกลายเป็น 14556