Cho một xâu ký tự S.
Yêu cầu: Tính độ dài của xâu S.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In độ dài của xâu.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hello World | 11 | Xâu có 11 ký tự (bao gồm cả khoảng trắng). |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Đếm số lượng chữ cái, chữ số và ký tự đặc biệt trong xâu.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In ba số nguyên lần lượt là số chữ cái, số chữ số và số ký tự đặc biệt.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hello123! | 5 3 1 | Có 5 chữ cái, 3 chữ số và 1 ký tự đặc biệt. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Chuyển tất cả các chữ cái in hoa trong xâu thành chữ thường. Các ký tự khác giữ nguyên.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi chuyển đổi.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| HeLLo 123! | hello 123! | Các chữ cái in hoa được chuyển thành chữ thường. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Chuyển tất cả các chữ cái thường trong xâu thành chữ in hoa. Các ký tự khác giữ nguyên.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi chuyển đổi.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| HeLLo 123! | HELLO 123! | Các chữ cái thường được chuyển thành chữ in hoa. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Đảo ngược thứ tự các ký tự trong xâu.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi đảo ngược.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hello World | dlroW olleH | Các ký tự trong xâu được đảo ngược thứ tự. |
Giới hạn:
Cho một xâu ký tự S và một ký tự c.
Yêu cầu: Đếm số lần ký tự c xuất hiện trong xâu S.
Dữ liệu vào: Dòng đầu chứa xâu S (độ dài không quá 105 ký tự). Dòng thứ hai chứa ký tự c.
Dữ liệu ra: In số lần xuất hiện của ký tự c.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| banana a |
3 | Ký tự 'a' xuất hiện 3 lần. |
Giới hạn:
Cho một xâu ký tự S và một ký tự c.
Yêu cầu: Tìm vị trí xuất hiện đầu tiên của ký tự c trong xâu. Nếu không tồn tại, in -1. Chỉ số bắt đầu từ 0.
Dữ liệu vào: Dòng đầu chứa xâu S (độ dài không quá 105 ký tự). Dòng thứ hai chứa ký tự c.
Dữ liệu ra: In kết quả bài toán.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| banana n |
2 | Ký tự 'n' xuất hiện đầu tiên tại vị trí 2. |
Giới hạn:
Cho một xâu ký tự S và một ký tự c.
Yêu cầu: Tìm vị trí xuất hiện cuối cùng của ký tự c trong xâu. Nếu không tồn tại, in -1. Chỉ số bắt đầu từ 0.
Dữ liệu vào: Dòng đầu chứa xâu S (độ dài không quá 105 ký tự). Dòng thứ hai chứa ký tự c.
Dữ liệu ra: In kết quả bài toán.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| banana a |
5 | Ký tự 'a' xuất hiện cuối cùng tại vị trí 5. |
Giới hạn:
Cho một xâu chỉ gồm các chữ cái tiếng Anh.
Yêu cầu: Đếm số nguyên âm và số phụ âm trong xâu. Các nguyên âm là: a, e, i, o, u (không phân biệt chữ hoa và chữ thường).
Dữ liệu vào: Một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In hai số nguyên lần lượt là số nguyên âm và số phụ âm.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hello | 2 3 | Có 2 nguyên âm (e, o) và 3 phụ âm (H, l, l). |
Giới hạn:
Cho một xâu ký tự S có thể chứa nhiều khoảng trắng liên tiếp.
Yêu cầu: Đếm số từ trong xâu. Hai từ được phân tách bởi một hoặc nhiều khoảng trắng.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In số lượng từ trong xâu.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Lap trinh C++ rat hay | 5 | Xâu gồm 5 từ. |
Giới hạn:
Cho một xâu ký tự S có thể chứa nhiều khoảng trắng liên tiếp hoặc khoảng trắng ở đầu và cuối xâu.
Yêu cầu: Chuẩn hóa xâu sao cho giữa hai từ chỉ còn đúng một khoảng trắng và không còn khoảng trắng ở đầu hoặc cuối xâu.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi chuẩn hóa.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Lap trinh C++ | Lap trinh C++ | Đã loại bỏ khoảng trắng thừa. |
Giới hạn:
Cho một xâu ký tự S có thể chứa nhiều khoảng trắng liên tiếp.
Yêu cầu: In mỗi từ của xâu trên một dòng riêng. Hai từ được phân tách bởi một hoặc nhiều khoảng trắng.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: Mỗi dòng chứa một từ theo đúng thứ tự xuất hiện trong xâu.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hoc lap trinh C++ | Hoc lap trinh C++ |
Mỗi từ được in trên một dòng. |
Giới hạn:
Cho một xâu ký tự S có thể chứa nhiều khoảng trắng liên tiếp.
Yêu cầu: Tìm từ có độ dài lớn nhất trong xâu. Nếu có nhiều từ cùng độ dài lớn nhất, in từ xuất hiện đầu tiên.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In từ dài nhất.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Hoc lap trinh Cplusplus | Cplusplus | "Cplusplus" có độ dài lớn nhất. |
Giới hạn:
Cho một xâu ký tự S biểu diễn họ và tên, có thể chứa nhiều khoảng trắng thừa và chữ hoa, chữ thường không đúng quy tắc.
Yêu cầu: Chuẩn hóa họ tên theo quy tắc: giữa hai từ chỉ có một khoảng trắng, ký tự đầu mỗi từ viết hoa, các ký tự còn lại viết thường.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In họ tên sau khi chuẩn hóa.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| nGuYeN vAn A | Nguyen Van A | Đã chuẩn hóa khoảng trắng và cách viết hoa, viết thường. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Kiểm tra S có phải là xâu đối xứng (Palindrome) hay không. Nếu đúng in YES, ngược lại in NO.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In YES hoặc NO.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| level | YES | Đọc từ trái sang phải và từ phải sang trái đều giống nhau. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Kiểm tra S có chỉ gồm các chữ số hay không. Nếu đúng in YES, ngược lại in NO.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In YES hoặc NO.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| 2026 | YES | Mọi ký tự trong xâu đều là chữ số. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Kiểm tra S có chỉ gồm các chữ cái tiếng Anh hay không. Nếu đúng in YES, ngược lại in NO.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In YES hoặc NO.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| HelloWorld | YES | Mọi ký tự đều là chữ cái. |
Giới hạn:
Cho hai xâu ký tự S và T.
Yêu cầu: So sánh hai xâu. Nếu S = T in =, nếu S < T in <, ngược lại in > theo thứ tự từ điển.
Dữ liệu vào: Gồm hai dòng, mỗi dòng chứa một xâu (độ dài mỗi xâu không quá 105 ký tự).
Dữ liệu ra: In một trong ba ký hiệu <, = hoặc >.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| apple banana |
< | "apple" đứng trước "banana" theo thứ tự từ điển. |
Giới hạn:
Cho hai xâu ký tự S và T.
Yêu cầu: Kiểm tra hai xâu có phải là hoán vị của nhau hay không. Hai xâu được coi là hoán vị nếu chúng có cùng độ dài và mỗi ký tự xuất hiện cùng số lần trong cả hai xâu. Nếu đúng in YES, ngược lại in NO.
Dữ liệu vào: Gồm hai dòng, mỗi dòng chứa một xâu (độ dài mỗi xâu không quá 105 ký tự).
Dữ liệu ra: In YES hoặc NO.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| listen silent |
YES | Hai xâu chứa cùng các ký tự với cùng số lần xuất hiện. |
Giới hạn:
Cho một xâu ký tự S chỉ gồm các chữ cái tiếng Anh và một số nguyên k (0 ≤ k ≤ 25).
Yêu cầu: Mã hóa xâu theo phương pháp Caesar bằng cách dịch mỗi chữ cái sang phải k vị trí trong bảng chữ cái. Giữ nguyên chữ hoa, chữ thường và các ký tự không phải chữ cái.
Dữ liệu vào: Dòng đầu chứa xâu S (độ dài không quá 105 ký tự). Dòng thứ hai chứa số nguyên k.
Dữ liệu ra: In xâu sau khi mã hóa.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| ABC xyz 3 |
DEF abc | Mỗi chữ cái được dịch sang phải 3 vị trí. |
Giới hạn:
Cho một xâu ký tự S đã được mã hóa bằng phương pháp Caesar và một số nguyên k (0 ≤ k ≤ 25).
Yêu cầu: Khôi phục lại xâu ban đầu bằng cách dịch mỗi chữ cái sang trái k vị trí trong bảng chữ cái. Giữ nguyên chữ hoa, chữ thường và các ký tự không phải chữ cái.
Dữ liệu vào: Dòng đầu chứa xâu S (độ dài không quá 105 ký tự). Dòng thứ hai chứa số nguyên k.
Dữ liệu ra: In xâu sau khi giải mã.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| DEF abc 3 |
ABC xyz | Mỗi chữ cái được dịch sang trái 3 vị trí. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Nén xâu theo phương pháp Run Length Encoding (RLE). Với mỗi nhóm ký tự liên tiếp giống nhau, in ra ký tự đó kèm theo số lần xuất hiện liên tiếp của nó.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi nén.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| aaabbcccc | a3b2c4 | Có 3 ký tự 'a', 2 ký tự 'b' và 4 ký tự 'c' liên tiếp. |
Giới hạn:
Cho một xâu đã được nén theo phương pháp Run Length Encoding (RLE). Mỗi nhóm gồm một ký tự theo sau là số lần xuất hiện của ký tự đó.
Yêu cầu: Khôi phục xâu ban đầu.
Dữ liệu vào: Gồm một dòng chứa xâu đã nén (độ dài không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi giải nén.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| a3b2c4 | aaabbcccc | Khôi phục lại xâu ban đầu. |
Giới hạn:
Cho một xâu ký tự S.
Yêu cầu: Thống kê số lần xuất hiện của từng ký tự khác nhau trong xâu theo thứ tự xuất hiện đầu tiên của ký tự đó.
Dữ liệu vào: Gồm một dòng chứa xâu S (độ dài không quá 105 ký tự).
Dữ liệu ra: Mỗi dòng in một ký tự và số lần xuất hiện của ký tự đó.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| banana | b 1 a 3 n 2 |
Các ký tự được in theo thứ tự xuất hiện đầu tiên. |
Giới hạn:
Cho hai xâu ký tự S và T.
Yêu cầu: Tìm vị trí xuất hiện đầu tiên của xâu T trong xâu S. Nếu T không xuất hiện trong S thì in -1. Chỉ số bắt đầu từ 0.
Dữ liệu vào: Gồm hai dòng. Dòng đầu chứa xâu S, dòng thứ hai chứa xâu T (độ dài mỗi xâu không quá 105 ký tự).
Dữ liệu ra: In vị trí xuất hiện đầu tiên của T trong S hoặc -1 nếu không tìm thấy.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Lap trinh C++ trinh |
4 | Xâu "trinh" bắt đầu tại vị trí 4. |
Giới hạn:
Gợi ý: Có thể sử dụng hàm find() của lớp string.
Cho ba xâu ký tự S, A và B.
Yêu cầu: Thay thế lần xuất hiện đầu tiên của xâu A trong S bằng xâu B. Nếu A không xuất hiện trong S thì giữ nguyên xâu S.
Dữ liệu vào: Gồm ba dòng. Dòng đầu chứa xâu S, dòng thứ hai chứa xâu A, dòng thứ ba chứa xâu B (độ dài mỗi xâu không quá 105 ký tự).
Dữ liệu ra: In xâu sau khi thay thế.
Ví dụ:
| Dữ liệu vào | Dữ liệu ra | Giải thích |
|---|---|---|
| Lap trinh C++ C++ Python |
Lap trinh Python | Thay lần xuất hiện đầu tiên của "C++" bằng "Python". |
Giới hạn:
Gợi ý: Có thể kết hợp các hàm find() và replace() của lớp string.