Giả sử chúng ta có một số n, chúng ta phải tìm số lớn nhất có thể đạt được bằng cách chèn chữ số 5 vào bất kỳ vị trí nào trong số.
Vì vậy, nếu đầu vào là n = 834, thì đầu ra sẽ là 8534.
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau:
nếu n > 0, thì
s := n dưới dạng chuỗi
k := chuỗi rỗng
c := False
với mỗi ký tự i trong s, thực hiện
nếu i < 5 và c là False, thì k := k + "5" + i, c := True
ngược lại, k := k + i
trả về k dưới dạng số nguyên
ngược lại (n <= 0),
k := chuỗi rỗng
s := |n| dưới dạng chuỗi
c := False
với mỗi ký tự i trong s, thực hiện
nếu i > 5 và c là False, thì k := k + "5" + i, c := True
ngược lại, k := k + i
nếu c là false, thì k := k + "5"
trả về -k
Ví dụ
Hãy xem triển khai sau để hiểu rõ hơn:
def solve(n):
if n > 0:
s = str(n)
k = ""
c = False
for i in s:
if int(i) < 5 and c == False:
k += "5" + i
c = True
else:
k += i
return int(k)
else:
k = ""
s = str(abs(n))
c = False
for i in s:
if int(i) > 5 and c == False:
k += "5" + i
c = True
else:
k += i
if not c:
k += "5"
return int("-" + k)
n = 834
print(solve(n))
Đầu vào
834
Đầu ra
8534