ให้จำนวนเต็ม N ภารกิจคือการแทนที่ 0 ทั้งหมดที่ปรากฏในตัวเลขด้วย '5' อย่างไรก็ตาม หมายเลขที่มี '0' นำหน้าไม่สามารถแทนที่ด้วย '5' เนื่องจากยังคงไม่เปลี่ยนแปลง ตัวอย่างเช่น
อินพุต-1 −
N = 1007
ผลผลิต −
1557
คำอธิบาย − จำนวนที่กำหนดมีศูนย์ 2 ตัว ซึ่งเมื่อแทนที่ด้วย '5' ผลลัพธ์ที่ได้จะเป็น 1557
อินพุต-2 −
N = 00105
ผลผลิต −
155
คำอธิบาย − เนื่องจากตัวเลขที่ระบุขึ้นต้นด้วย '0' นำหน้าซึ่งสามารถละเว้นได้ และเอาต์พุตหลังจากแทนที่ 0 ตรงกลางด้วย '5' ผลลัพธ์ที่ได้จะเป็น 155
แนวทางการแก้ปัญหานี้
ในการแทนที่ 0 ทั้งหมดในตัวเลขที่กำหนดด้วย '5' เราสามารถค้นหาและแยกตัวเลขหลักสุดท้ายของตัวเลขได้ หากหลักสุดท้ายของตัวเลขนั้นเป็น '0' ให้เปลี่ยนและแทนที่ค่าด้วย '5' และแยกตัวเลขอื่นออกมา อย่างไรก็ตาม ต้องละเว้น '0' นำหน้าใดๆ ในตัวเลขที่ระบุ ดังนั้นเราจะแยกหลักสุดท้ายก่อนแล้วจึงเรียกฟังก์ชันเดิมอีกครั้งในขณะที่แยกหลักอื่นๆ ของหมายเลขนั้น
-
ป้อนตัวเลข N.
-
ฟังก์ชัน Integer convertToFive(int N) รับตัวเลขเป็นอินพุตและส่งกลับตัวเลขที่แก้ไขโดยแทนที่ 0 ทั้งหมดด้วย '5'
-
หากหลักสุดท้ายของตัวเลขคือ '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(covertToFive(14006))
ผลลัพธ์
การเรียกใช้โค้ดด้านบนจะสร้างผลลัพธ์เป็น
14556
เนื่องจาก มีสอง 0 ในหมายเลขที่กำหนด หลังจากเปลี่ยนหมายเลข 14006 จะกลายเป็น 14556