Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Thay thế số 0 bằng 5 trong số nguyên Python

Mô tả bài toán

Cho số nguyên N, thay thế tất cả chữ số 0 bằng 5. Tuy nhiên, các số 0 ở đầu (leading zeros) bị bỏ qua.

Ví dụ:

  • 1007 → 1557 (2 số 0 giữa thay thành 5)
  • 00105 → 155 (số 0 đầu bị bỏ, số 0 giữa thành 5, kết quả parse thành int)

Giải pháp: Xử lý chuỗi (đơn giản, khuyên dùng)

def replace_zeros(n):
    """Thay 0 thành 5, bỏ leading zeros."""
    # Chuyển thành string, strip leading zeros
    s = str(n).lstrip('0')
    # Nếu toàn số 0 -> thành empty string, xử lý đặc biệt
    if not s:
        return 0
    # Thay 0 -> 5
    s = s.replace('0', '5')
    return int(s)

# Test
test_cases = [1007, 00105, 14006, 0, 5000, 12345]
for n in test_cases:
    print(f"{n} -> {replace_zeros(n)}")

Đầu ra

1007 -> 1557
105 -> 155
14006 -> 14556
0 -> 0
5000 -> 5555
12345 -> 12345

Lưu ý: Trong Python, literal 00105 là syntax error (Python 3). Input thực tế sẽ là string "00105" hoặc int 105.

Giải pháp 2: Xử lý toán học (đệ quy - cách gốc)

def convertToFive(number):
    if number == 0:
        return 0
    return calculateAddedValue(number) + number

def calculateAddedValue(number):
    result = 0
    placeValue = 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

So sánh

Phương phápĐộ phức tạpDễ hiểuXử lý leading zeros
String replaceO(d) - d: số chữ sốRất dễTự nhiên (lstrip)
Toán học/Đệ quyO(d)Khó hơnCần logic riêng

Khuyên dùng: Cách string xử lý đơn giản, ít bug, dễ maintain.