Buổi 2: Xâu ký tự KM
Số điện thoại (xử lý xâu - hsg)
Nộp bàiPoint: 1
Số điện thoại là một chuỗi có đúng 11 chữ số, trong đó chữ số đầu tiên là 8. Ví dụ: dãy 80011223388 là số điện thoại, nhưng các dãy 70011223388 và 80000011223388 thì không. Bạn được cung cấp một chuỗi s có độ dài n, bao gồm các chữ số. Trong một thao tác, bạn có thể xóa bất kỳ ký tự nào khỏi chuỗi s. Ví dụ: có thể lấy các chuỗi 112, 111 hoặc 121 từ chuỗi 1121. Bạn cần xác định xem có một chuỗi các hoạt động như vậy (có thể là không), sau đó chuỗi s trở thành số điện thoại.
Đầu vào:
- Dòng đầu tiên chứa một số nguyên t (1≤t≤100) - số lượng trường hợp kiểm tra. Dòng đầu tiên của mỗi trường hợp chứa một số nguyên n (1≤n≤100) - độ dài của chuỗi s.
- Dòng thứ hai gồm n là độ dài chuỗi s và chuỗi số s.
Đầu ra:
- Đối với mỗi bài kiểm tra in một dòng.
- Nếu có một chuỗi các hoạt động, sau đó s trở thành một số điện thoại, in YES. Nếu không, in NO.
Input:
2
13
7818005553535
11
31415926535
Output:
YES
NO
Email và Mật khẩu 2 (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Trường đại học ABC tổ chức cấp email cho sinh viên mới nhập học. Email và mật khấu sẽ được cấp dựa trên tên của sinh viên và ngày sinh của sinh viên đó. Bạn hãy viết chương trình để cấp tài khoản theo yêu cầu như sau, tên email được tạo bằng cách lấy tên của sinh viên và ghép với các chữ cái đầu tiên của họ và tên đệm tất các ký tự trong email đều ở dạng in thường, ví dụ sinh viên có tên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn".
Mật khẩu sẽ dựa trên ngày sinh của sinh viên đó, bằng cách ghép ngày tháng năm lại với nhau, ví dụ sinh viên sinh ngày 27/04/2002 sẽ có mật khẩu là 2742002. Ngoài ra sẽ có những trường hợp sinh viên bị trùng tên email, ví dụ, sinh viên "Nguyen Van Long" sẽ được cấp email "longnv@xyz.edu.vn", sinh viên tên "Ngo Van Long" cũng sẽ được cấp email "longnv@xyz.edu.vn", vì thế nhà trường quy định, theo thứ tự tên trong danh sách, nếu email được cấp của sinh viên hiện tại đã được cấp cho một sinh viên trước đó thì thêm số thứ tự vào tên email.
Ràng buộc:
~1 \leq N ≤ 5000~
Dòng thông tin của sinh viên không quá 1000 kí tự, dữ liệu đảm bảo thông tin cuối cùng trong dòng là ngày sinh của sinh viên.
In ra ra email và mật khẩu được cấp của mỗi sinh viên trên 2 dòng. Chú ý các sinh viên email bị trùng tên sẽ được thêm số thứ tự vào sau.
Input:
4
Nguyen quang Truong 24/12/2005
Le van Tho 06/07/2005
ngo quan Truong 12/3/2005
le van Sen 02/4/2005
Output:
truongnq@xyz.edu.vn
24122005
tholv@xyz.edu.vn
672005
truongnq2@xyz.edu.vn
1232005
senlv@xyz.edu.vn
242005
Sắp xếp các từ trong xâu 2
Nộp bàiPoint: 1
Cho một xâu kí tự S bao gồm các chữ cái và dấu cách, một từ được định nghĩa là các kí tự liên tiếp không chứa dấu cách, hãy sắp xếp các từ thuận nghịch khác nhau trong xâu theo thứ tự từ chiều dài tăng dần, nếu 2 từ thuận nghịch có cùng chiều dài thì từ nào xuất hiện trước sẽ được in ra trước. Nếu có nhiều từ thuận nghịch giống nhau chỉ in ra 1 từ.
Ràng buộc: ~1 \leq len(s) \leq 100000~
In ra các từ theo thứ tự sắp xếp yêu cầu, các từ được in cách nhau một dấu cách.
Input:
php aba aaaa nguyen huu hoc pop
Output:
php aba pop aaaa
Ký tự xuất hiện ở 1 trong 2 xâu (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho 2 xâu kí tự S1 và S2 chỉ bao gồm chữ cái in hoa và in thường, hãy tìm các kí tự xuất hiện trong xâu S1 mà không xuất hiện trong xâu S2 và các kí tự chỉ xuất hiện trong xâu S2 mà không xuất hiện trong xâu S1. Các ký tự được in ra theo thứ tự từ điển và chỉ liệt kê mỗi ký tự một lần.
Ràng buộc: ~1 \leq len(S1) ≤ 100000; 1 \leq len(S2) ≤ 100000~
Dòng đầu tiên in ra các ký tự chi xuất hiện trong S1 mà không xuất hiện trong S2. Dòng thứ 2 in ra các ký tự chỉ xuất hiện trong S2 mà không xuất hiện trong S1.
Input:
hoccongnghe
laptrinh
Output:
cego
ailprt
Tít và Học Công Nghệ (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Tít là một người ghét hoccongnghe vì cho rằng hoccongnghe cho quá nhiều bài tập khó làm cậu ta phải đau đầu. Vì thế cậu ta ghét tất cả những chữ cái xuất hiện trong từ "hoccongnghe", Tít muốn nhờ bạn xóa hết những kí tự xuất hiện trong từ "hoccongnghe" khỏi xâu kí tự S, bạn hãy giúp Tít nhé. Nếu xâu S sau khi xóa không còn kí tự nào bạn phải in ra EMPTY
In ra xâu S sau khi xóa hoặc in ra EMPTY nếu xâu S trở thành rỗng.
Ràng buộc: ~1 \leq len(S) \leq 10000~
Input 01:
h2t3w4cmnn23o?34c
Output 01:
2t3w4m23?34
Input 02:
hoccongnghe
Output 01:
EMPTY
Sắp xếp chữ số (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho số nguyên không âm N, hãy tiến hành sắp xếp các chữ số của N theo thứ tự tăng dần rồi in ra màn hình, trong trường hợp số sau khi sắp xếp xuất hiện các chữ số 0 ở đầu thì ra không in những chữ số 0 vô nghĩa này
In ra số N sau khi sắp xếp
Ràng buộc: ~0 \leq N \leq 10^{18}~
Input 01:
999968677
Output 01:
667789999
Input 02:
4321000
Output 02:
1234
Tổng hợp xử lý xâu (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho xâu S bao gồm chữ hoa, chữ thường, số và các ký tự đặc biệt khác. Hãy xây dựng 3 hàm gồm: Lật ngược xâu, chuyển sang in hoa, chuyển sang in thường xâu S đó.
Ràng buộc: ~1 \leq len(S) \leq 10^5~
In ra: Dòng 1 là xâu đảo ngược, dòng 2 là xâu in hoa và dòng 3 là xâu in thường
Input:
hoccongNghe23?~347
Output:
743~?32ehgNgnoccoh
HOCCONGNGHE23?~347
hoccongnghe23?~347
Tập từ riêng của 2 xâu (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho 2 xâu kí tự S và T. Hãy liệt kê các từ xuất hiện ở xâu S và không xuất hiện ở xâu T mà không phân biệt hoa thường, mỗi từ được liệt kê một lần theo thứ tự từ điến tăng dần.
Ràng buộc: 1 ≤ len(S) ≤ 10000; 1 ≤ len(T) ≤ 10000; Xâu S và T chỉ bao gồm chữ cái và dấu cách.
In ra các từ xuất hiện ở cả 2 xâu theo thứ tự từ điển tăng dẫn, mỗi từ được liệt kê 1 lần và in ra ở dạng chữ in thường.
Input:
aa AA abc abcd zzaA
ABc ABCd uuzka aka opl
Output:
aa zzaa
Input: 02
abc abc abcd abc AB
abC CD ZAH abd ABcD
Output 02:
ab
Xâu có đầu cuối giống nhau (xâu ký tự - chuỗi ký tự)
Nộp bàiPoint: 1
Cho xâu S chỉ bao gồm các kí tự in thường, hãy đếm số lượng xâu con (xâu ký tự chứa các chữ cái liên tiếp) mà có kí tự đầu và kí tự cuối giống nhau. Lưu ý: Không tính các xâu con có 1 ký tự.
Ràng buộc; 1 ≤ len(S) ≤ 100000;
Input 01:
abeda
Output 01:
1
Input 02:
abcdaaa
Output 02:
6
Tích lớn nhất (tham lam)
Nộp bàiPoint: 1
Cho dãy số A gồm N phần tử là các số nguyên. Hãy tính tích lớn nhất của 2 hoặc 3 phần tử trong dãy.
Đầu vào: Dòng đầu tiên là N; Dòng thứ 2 là N phần tử của mảng A
Ràng buộc: 1<=N<=1000; 0<=abs(A[i])<=10^6
Đầu ra: In ra tích lớn nhất của 2 hoặc 3 phần tử trong mảng
Input:
5
-9 4 3 -3 1
Output:
108