Quảng cáo
1 câu trả lời 546
1. Duyệt từ đầu đến cuối xâu.
2. Khi gặp một chữ số:
- Nếu stack không rỗng và chữ số hiện tại lớn hơn chữ số trên đỉnh stack và số kí tự đã xóa khỏi stack nhỏ hơn (tổng chiều dài xâu - 5), thì loại bỏ chữ số trên đỉnh stack.
- Đẩy chữ số hiện tại vào stack.
3. Loại bỏ chữ số thừa (nếu cần) từ đỉnh stack cho đến khi chỉ còn 5 chữ số.
4. Các chữ số còn lại trong stack sẽ tạo thành số lớn nhất.
Dưới đây là mã Python cho giải pháp này:
```python
def largest_number(s):
stack = []
removed = 0
for char in s:
while stack and char > stack[-1] and removed < len(s) - 5:
stack.pop()
removed += 1
stack.append(char)
while len(stack) > 5:
stack.pop()
return ''.join(stack)
# Test
s = "123456789"
print(largest_number(s)) # Expected output: 56789
```

Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
86226
