# data[].attributes.body
Input: Một chuỗi kí tự

Output: Dãy số nguyên đại diện cho chuỗi đã mã hoá

1. Trình bày thuật toán:

Duyệt chuỗi đầu vào để tạo từ điển ban đầu chứa các ký tự đơn, mỗi ký tự gắn với mã ASCII tương ứng. Lần lượt đọc từng ký tự, ghép vào chuỗi hiện tại để tạo thành chuỗi mới. Nếu chuỗi mới đã tồn tại trong từ điển thì tiếp tục mở rộng. Nếu chưa có, chương trình in ra mã của chuỗi cũ, thêm chuỗi mới vào từ điển với mã số tăng dần từ 256 trở đi. Sau khi duyệt hết, nếu còn chuỗi chưa in thì in mã cuối cùng ra. Kết quả đầu ra là dãy số nguyên ứng với các chuỗi đã mã hóa.

# data[].attributes.body
Input:

Chuỗi lớn (ví dụ: "hello world").

Chuỗi con (ví dụ: "lo").

Output:

+ Vị trí xuất hiện đầu tiên của chuỗi con trong chuỗi lớn.

+ Nếu không tìm thấy, trả về -1 hoặc thông báo không tìm thấy.

1. Trình bày thuật toán:

-       Bắt đầu từ vị trí đầu tiên của chuỗi văn bản, ta lần lượt kiểm tra từng đoạn con có độ dài bằng chuỗi cần tìm.

Tại mỗi vị trí kiểm tra, so sánh từng ký tự trong đoạn con với chuỗi cần tìm:

+        Nếu tất cả các ký tự đều giống nhau thì kết luận tìm thấy chuỗi tại vị trí đó.

+        Nếu có ít nhất một ký tự không giống, thì chuyển sang vị trí kế tiếp và tiếp tục so sánh.

-       Ta tiếp tục quá trình cho đến khi đã kiểm tra hết các vị trí có thể trong chuỗi văn bản.

# data[].attributes.body
Input: Hai dãy số đã được sắp xếp theo thứ tự tăng dần (hoặc giảm dần).

Output: Một dãy mới là kết quả của việc gộp 2 dãy đầu vào thành một dãy đã sắp xếp hoàn chỉnh.

1. Trình bày thuật toán:

So sánh 2 khóa đứng đầu 2 dãy. Chọn ra khóa nhỏ nhất và đưa nó vào miền sắp xếp ở vị trí thích hợp. Sau đó khóa này bị loại ra khỏi dãy chứ nó. Quá trình tiếp tục cho đến khi 1 trong 2 dãy này đã rỗng, khi đó chuyển toàn bộ dãy khóa còn lại vào miền sắp xếp.

# data[].attributes.body
1. Trình bày thuật toán

Nhập vào:

·         Chuỗi văn bản cần mã hóa hoặc giải mã.

·         Khóa (số nguyên): xác định độ dịch chuyển.

·         Lựa chọn: mã hóa hoặc giải mã.

Xử lý:

·         Với mỗi ký tự trong chuỗi:

o    Nếu là chữ cái:

- Mã hóa: dịch về phía sau trong bảng chữ cái (VD: A → D nếu khóa = 3).

-  Giải mã: dịch về phía trước trong bảng chữ cái (VD: D → A nếu khóa = 3).

- Quay vòng nếu vượt qua 'Z' hoặc 'z'.

o    Nếu không phải chữ cái: giữ nguyên.

Kết quả: Trả về chuỗi đã được mã hóa hoặc giải mã.

# data[].attributes.body
Chuỗi ban đầu : " HELLO "

Khóa mã hóa: 3

# data[].attributes.body
Giải mã (với khóa bằng 3)

# data[].attributes.body
•       Input: Một chuỗi văn bản và một chuỗi mẫu cần tìm.

•       Output: Danh sách các vị trí trong văn bản mà mẫu xuất hiện (bắt đầu từ chỉ số 0).

1.     Trình bày thuật toán:

-      So sánh mẫu với từng đoạn con của văn bản có độ dài bằng độ dài mẫu. Bắt đầu từ vị trí đầu tiên của văn bản, so sánh từng ký tự của mẫu với đoạn tương ứng trong văn bản:

+ Nếu toàn bộ ký tự của mẫu khớp với đoạn văn bản, ghi nhận vị trí bắt đầu.

+ Nếu không khớp, dịch mẫu sang phải một vị trí rồi tiếp tục so sánh.

+ Quá trình tiếp tục cho đến khi vị trí bắt đầu của đoạn con đạt đến phần cuối của văn bản (sao cho đoạn con vẫn đủ độ dài như mẫu).

+ Kết thúc khi không còn đoạn nào đủ dài để so sánh.