समस्या विवरण
एक पूर्णांक N दिया गया है, इसमें आने वाले सभी 0 को 5 से बदलें। लेकिन अग्रणी (leading) शून्यों को अनदेखा करें।
उदाहरण 1
इनपुट: N = 1007 आउटपुट: 1557 व्याख्या: दो 0 को 5 से बदला गया।
उदाहरण 2
इनपुट: N = 00105 आउटपुट: 155 व्याख्या: अग्रणी 00 को अनदेखा किया, बीच के 0 को 5 से बदला।
समाधान दृष्टिकोण
- संख्या को स्ट्रिंग में बदलें (अग्रणी शून्य स्वचालित रूप से हट जाएंगे यदि पूर्णांक के रूप में पढ़ा जाए)।
- स्ट्रिंग में '0' को '5' से बदलें।
- पूर्णांक में वापस बदलें।
सरल स्ट्रिंग-आधारित समाधान
def convert_zeros_to_five(n):
# पूर्णांक के रूप में पढ़ने पर अग्रणी शून्य हट जाते हैं
# यदि इनपुट स्ट्रिंग के रूप में है, तो lstrip('0') उपयोग करें
s = str(n).lstrip('0')
if not s: # यदि सभी शून्य थे
return 0
return int(s.replace('0', '5'))
# टेस्ट
print(convert_zeros_to_five(1007)) # 1557
print(convert_zeros_to_five("00105")) # 155
print(convert_zeros_to_five(14006)) # 14556
आउटपुट
1557 155 14556
गणितीय दृष्टिकोण (प्लेस वैल्यू का उपयोग)
def convertToFive(number):
if number == 0:
return 5
result = 0
place_value = 1
while number > 0:
digit = number % 10
if digit == 0:
result += 5 * place_value
else:
result += digit * place_value
number //= 10
place_value *= 10
return result
print(convertToFive(14006)) # 14556
स्ट्रिंग विधि सरल और पठनीय है; गणितीय विधि शैक्षिक उद्देश्य के लिए अच्छी है।