Bài tập  /  Bài đang cần trả lời

Khái niệm: Xâu thuần nhất là xâu chỉ gồm các chữ cái in hoa trong bảng chữ cái

----- Nội dung dịch tự động từ ảnh -----
- Khái niệm: Xâu thuần nhất là xâu chỉ gồm các chữ cái in hoa trong bảng chữ cái
Tiếng Anh. Một xâu thuần nhất có thể được viết thu gọn, bao gồm kí tự và số lần xuất
hiện của nó, còn gọi là nén xâu.
Chẳng hạn: Xâu thuần nhất ‘HOAHOCHUUCO’. Xâu nén là: ‘A1C2H3O3U2’
- Yêu cầu: Cho trước một xâu S chiều dài không quá 255 ký tự.
a) Tạo xâu X là xâu thuần nhất có độ dài lớn nhất mà các chữ cái được lấy từ
xâu S đã cho, giữ nguyên thứ tự xuất hiện của các kí tự trong xâu S. Nếu không tạo được
xâu X thì gán X bằng xâu ‘AZ’.
b) Tạo xâu R là xâu nén của xâu X, các chữ cái trong xâu R được sắp xếp theo
thứ tự của bảng chữ cái : A, B, C, .., Z (gọi là thứ tự từ điển).
- Dữ liệu vào: Từ tệp văn bản NENXAU.INP gồm 1 dòng duy nhất là xâu S.
1
- Kết quả: Ghi vào tệp văn bản NENXAU.OUT gồm 2 dòng :
+ Dòng đầu tiên ghi xâu thuần nhất X.
+ Dòng tiếp theo ghi xâu nén R.
- Ví dụ:
NENXAU.INP
NENXAU.OUT
TP Cao Lanh, TP Sa Dec Tinh DONG THAP | TPCLTPSDTDONGTHAP
A1C1D2GIHILIN101P3S1T4
1 trả lời
Hỏi chi tiết
127
1
0
thảo
14/05/2023 13:58:15
+5đ tặng

ể giải quyết bài toán này, chúng ta có thể sử dụng các bước sau:

  1. Đọc xâu S từ tệp văn bản NENXAU.INP.
  2. Khởi tạo biến X là xâu rỗng để lưu trữ xâu thuần nhất.
  3. Khởi tạo một mảng đếm (count) với kích thước 26 (tương ứng với số chữ cái trong bảng chữ cái tiếng Anh) và giá trị ban đầu là 0.
  4. Duyệt qua từng ký tự c trong xâu S:
    • Nếu ký tự c là một chữ cái in hoa, thêm c vào xâu X và tăng giá trị tương ứng trong mảng đếm count[c - 'A'].
  5. Kiểm tra xem xâu X có độ dài lớn hơn 0 hay không:
    • Nếu có, tiến hành tạo xâu nén R.
    • Nếu không, gán X bằng xâu 'AZ' và R cũng bằng 'AZ'.
  6. Tạo xâu nén R bằng cách duyệt qua từng chữ cái từ A đến Z:
    • Nếu giá trị count[i] lớn hơn 0, thêm ký tự tương ứng và giá trị count[i] vào xâu R.
  7. Ghi xâu X và xâu R vào tệp văn bản NENXAU.OUT.
b) 
# Đọc xâu S từ tệp văn bản NENXAU.INP
with open('NENXAU.INP', 'r') as file:
    S = file.read().strip()

# Khởi tạo biến X và mảng đếm count
X = ""
count = [0] * 26

# Tạo xâu thuần nhất X và mảng đếm count
for c in S:
    if 'A' <= c <= 'Z':
        X += c
        count[ord(c) - ord('A')] += 1

# Kiểm tra xâu X có độ dài lớn hơn 0 hay không
if len(X) > 0:
    # Tạo xâu nén R
    R = ""
    for i in range(26):
        if count[i] > 0:
            R += chr(i + ord('A')) + str(count[i])
else:
    X = 'AZ'
    R = 'AZ'

# Ghi xâu X và xâu R vào tệp văn bản NENXAU.OUT
with open('NENXAU.OUT', 'w') as file:
    file.write(X + '\n')
    file.write(R)
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 8 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo