String2

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Cánh Diều - COUNTWORD - Đếm số từ 100 (p) 1.0s 256M
2 Cánh diều - FULLNAME - Nối họ, đệm, tên 100 (p) 1.0s 256M
3 Cánh diều - SUBSTR - Đếm số lần xuất hiện xâu con 100 (p) 1.0s 256M
4 Cánh diều - FINDSTRING - Tìm xâu con đầu tiên 100 (p) 1.0s 256M
5 Cánh Diều - REPLACE - Thay thế 100 (p) 1.0s 256M
6 Cánh Diều - DELETE - Xoá kí tự trong xâu 100 (p) 1.0s 256M
7 Cánh diều - SUBSTR2 - Xâu con 2 100 (p) 1.0s 256M
8 Cánh diều - CLASS - Ghép lớp 100 (p) 1.0s 256M
9 Chuyển đổi xâu 100 (p) 1.0s 256M

1. Cánh Diều - COUNTWORD - Đếm số từ

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Nhập vào từ bàn phím hai xâu \(s_1\), \(s_2\), mỗi xâu không chứa kí tự dấu cách dư ở đầu, cuối xâu, phân cách giữa các từ chỉ là \(1\) dấu cách. Nếu xâu không chứa dấu cách thì nó là một từ, trong trường hợp ngược lại, dấu cách phân tách các từ trong xâu. Viết chương trình in ra tổng số từ trong cả hai xâu.

Input

  • Dòng đầu ghi xâu \(s_1\)

  • Dòng thứ \(2\) ghi xâu \(s_2\)

Các xâu chỉ gồm các kí tự latin, kí tự chữ số và dấu cách, có độ dài không quá \(10^6\)

Output

  • Ghi một số nguyên là tổng số từ trong hai xâu.

Example

Test 1

Input
Duoi trang quyen da goi he
Dau tuong lua luu lap loe dam bong
Output
14

2. Cánh diều - FULLNAME - Nối họ, đệm, tên

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho 3 dòng, mỗi dòng ghi một xâu kí tự chỉ gồm các kí tự latin viết thường có thể chứa dấu cách lần lượt thể hiện Họ, Đệm, Tên của một người. Hãy in ra một dòng gồm họ tên đầy đủ của người đó (xem thêm ví dụ minh hoạ).

Input

  • Gồm ba dòng, mỗi dòng ghi xâu kí tự; dòng 1 là Họ; dòng 2 là Đệm; dòng 3 là Tên.

Output

  • Gồm 1 dòng ghi tên theo cấu trúc Họ Đệm Tên

Example

Test 1

Input
Phan
Dinh
Thuc 
Output
Phan Dinh Thuc

3. Cánh diều - SUBSTR - Đếm số lần xuất hiện xâu con

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một xâu \(A\) được gọi là xâu con của xâu \(B\) nếu các kí tự của xâu \(A\) được xuất hiện liên tiếp trong xâu \(B\). Ví dụ \(“apple”\), \(“appl”\), \(“pple”\), \(“ple”\) là xâu con của xâu \(“apple”\); nhưng xâu \(“ppal”\) không là xâu con của xâu \(“apple”\).

Yêu cầu: Cho xâu \(B\) và xâu \(A\); Đếm số lần xuất hiện không giao nhau của xâu \(A\) trong xâu \(B\).

Input

  • Dòng đầu ghi xâu \(B\).

  • Dòng thứ hai ghi xâu \(A\).

Các xâu chỉ gồm kí tự latin viết thường không chứa dấu cách. Các xâu có độ dài không quá \(100\).

Output

  • Một số nguyên là số lần xuất hiện của xâu \(A\) trong \(B\)

Example

Test 1

Input
aaa
aa
Output
1

4. Cánh diều - FINDSTRING - Tìm xâu con đầu tiên

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Hàm \(A.find(B)\) trả về vị trí đầu tiên xuất hiện của xâu \(B\) trong xâu \(A\). Nếu không tồn tại xâu con \(B\) trong \(A\), trả về \(-1\).

Sử dụng hàm find thực hiện các yêu cầu sau:

Cho một xâu \(S\)\(Q\) truy vấn, mỗi truy vấn gồm có một xâu \(x\): hãy tìm vị trí đầu tiên xuất hiện của xâu \(x\) trong xâu \(S\) ban đầu. Xâu gồm các kí tự latin gồm chữ và số.

Input

  • Dòng đầu ghi xâu \(S\) có độ dài không quá \(10^6\)

  • Dòng thứ hai ghi \(Q\) là số lượng truy vấn

Tiếp theo là \(Q\) dòng, mỗi dòng ghi một xâu \(x\) có độ dài không quá \(10^6\)

Output

  • Với mỗi truy vấn ghi kết quả trên 1 dòng là vị trí đầu tiên xuất hiện xâu \(x\) trong \(S\)

Example

Test 1

Input
Cai xac xinh xinh 
2 
xinh 
be   
Output
8
-1

5. Cánh Diều - REPLACE - Thay thế

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Hàm \(y.replace(x_1, x_2)\) tạo ra một xâu mới từ xâu \(y\) bằng cách thay thế xâu con \(x_1\) của \(y\) bằng xâu \(x_2\). Tất cả các xâu con bằng \(x_1\) và không giao nhau đều được thay bằng xâu \(x_2\).

Yêu cầu:

  • Cho \(Q\) truy vấn, mỗi truy vấn gồm ba dòng:
  • Dòng đầu ghi xâu \(y\).
  • Dòng thứ hai ghi xâu \(x_1\).
  • Dòng thứ \(3\) ghi xâu \(x_2\).

Với mỗi truy vấn, hãy in ra xâu có được bằng cách thay thế xâu con \(x_1\) của \(y\) bằng xâu con \(x_2\).

Input

  • Dòng đầu ghi số nguyên Q là số truy vấn \((1\le Q \le100)\). \(3 * Q\) dòng tiếp theo mỗi nhóm \(3\) dòng ghi một truy vấn như mô tả ở trên. Các xâu chỉ gồm kí tự thường.

Output

  • Với mỗi truy vấn, in xâu kết quả trên một dòng

Example

Test 1

Input
2 
truc xinh truc moc dau dinh 
dau dinh 
bo ao 
em xinh em dung mot minh cung xinh 
mot minh 
noi nao 
Output
truc xinh truc moc bo ao 
em xinh em dung noi nao cung xinh

Test 2

Input
1
truc xinh truc moc dau dinh
truc
abc
Output
abc xinh abc moc dau dinh

6. Cánh Diều - DELETE - Xoá kí tự trong xâu

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Viết chương trình nhập vào một xâu \(s\), và một kí tự \(c\). Hãy tạo xâu mới bằng cách xoá các kí tự \(c\) trong xâu \(s\).

Input

  • Dòng đầu ghi xâu \(s\), độ dài không quá \(10^6\).

  • Dòng thứ hai ghi một kí tự (latin thường).

Output

  • In ra một xâu sau khi xử lí.

Example

Test 1

Input
123a45a6a78
a
Output
12345678

7. Cánh diều - SUBSTR2 - Xâu con 2

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Xác định xâu con \(x\) của xâu \(y\) biết \(x\) gồm các ký tự trong đoạn chỉ số \([L;R)\) của \(y\) (từ \(L\) tới \(R\), nhưng không bao gồm \(R\))

Cho một xâu kí tự \(y\) chỉ gồm các kí tự latin viết thường có thể chứa dấu cách. Có \(N\) truy vấn, mỗi truy vấn gồm hai số nguyên \(L, R\) \((0\le L \le R < \texttt{len}(y))\).

Yêu cầu: với mỗi truy vấn, in ra xâu con của xâu \(y\) từ chỉ số \(L\) tới chỉ số \(R\)?

Input

  • Dòng đầu ghi xâu y có độ dài không quá \(10^6\); xâu gồm các kí tự latin và số.

  • Dòng thứ hai ghi số nguyên \(N\) là số lượng truy vấn \((1\le N\le 100)\)

  • \(N\) dòng tiếp theo mỗi dòng ghi hai số nguyên \(L, R\)

Output

  • Với mỗi truy vấn, in ra xâu con từ chỉ số \(L\) đến chỉ số \(R\) của xâu

Example

Test 1

Input
0123456 
3 
2 5 
2 3 
0 7 
Output
234 
2 
0123456

8. Cánh diều - CLASS - Ghép lớp

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho danh sách của lớp A và lớp B. Lớp A gồm \(N\) học sinh, lớp B gồm \(M\) học sinh. Tên mỗi học sinh là một xâu kí tự gồm các kí tự Latin chữ hoa, chữ thường, không chứa dấu cách. Người ta thực hiện ghép hai lớp A, B thành lớp C, yêu cầu đưa ra danh sách học sinh lớp ghép C theo thứ tự alphabeta tăng dần.

Input

  • Dòng đầu ghi hai số nguyên \(N, M\) \((1 \le N, M \le 100)\)

  • Dòng thứ hai ghi \(N\) xâu kí tự, mỗi xâu kí tự là một tên có cấu trúc như quy cách.

  • Dòng thứ ba ghi \(M\) xâu kí tự, mỗi xâu kí tự là một tên có cấu trúc như quy cách.

Các tên cách nhau bởi dấu cách.

Output

  • Gồm một dòng ghi danh sách các học sinh đã sắp xếp của lớp C, tên học sinh cách nhau bởi dấu cách.

Example

Test 1

Input
3 5
Lan Hoa Hung
Anh Thuc Nghia Dung Vu 
Output
Anh Dung Hoa Hung Lan Nghia Thuc Vu

9. Chuyển đổi xâu

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Thầy Hải được trao \(1\) bức thư tình từ \(1\) bạn nữ xinh đẹp giấu tên, nhưng trong bức thư, bạn nữ cố tình ghi lẫn lộn giữa chữ hoa, chữ thường và yêu cầu thầy hãy chuyển ngược lại (chữ hoa thành chữ thường và ngược lại). Thầy Hải rất thích, nhưng thầy đang bận ôn thi cho học sinh nên không muốn mất thời gian để chuyển đổi, các bạn hãy viết chương trình giúp thầy nhé.

Input

  • Gồm \(1\) dòng duy nhất là xâu kí tự cần chuyển đổi. \((1≤length(S)≤100)\).

Output

  • Xâu đã chuyển đổi.

Example

Test 1

Input
dEAR hAI 
Output
Dear Hai