You are on page 1of 8

1

Cú pháp khai báo đối tượng string:


string <tên đối tượng string>;

string str1 = "I love";


So sánh chuỗi, gắn, nối chuỗi trong lớp string
Gắn chuỗi
Để gắn chuỗi này cho một chuỗi khác, hoặc gắn chuỗi bằng 1 chuỗi mới chúng ta sẽ xử dụng dấu “=“.
Nối chuỗi
Không giống như mảng ký tự, lớp string cho phép chúng ta có thể nối 2 chuỗi với nhau thông qua toán tử là
dấu “+“.
Ví dụ như sau:
1 string a = "abc";
2 string b = "1234";
3 string c = a+b; c=”abc1234”
Lớp string cho phép chúng ta có thể sử dụng các toán tử quan hệ (<, >, ==, !=,…) để so sánh 2 chuỗi với
nhau.
string a = "abccd";
1
string b = "abcd";
2
if(a==b) cout<<"true"; else cout<<"false\n"; //Kq = false
3
if(a>b) cout<<"true"; else cout<<"false\n"; //Kq = false
4
if(a<b) cout<<"true"; else cout<<"false\n"; //Kq = true

Các hàm xử lý chuỗi trong lớp string


string s,s1,s2;

Hàm Ý nghĩa
s.length() Trả về số lượng ký tự trong string s(độ dài chuỗi)

s.substr(x, y) Copy xâu s từ vị trí x, đi y kí tự

s.find(r) Kiểm tra chuỗi string r có xuất hiện trong chuỗi s hay không. Nếu có thì trả về
vị trí bắt đầu xuất hiện chuỗi r trong chuỗi s. (Không thấy trả về -1)
s.rfind(r) Tìm kiếm ngược (vị trí cuối cùng trong xâu)
s.erase(x, n) Xóa n ký tự bắt đầu tại vị trí x.

s.replace(x, n, str) Thay thế n ký tự tại vị trí bắt đầu là x bằng chuỗi str.
Lưu ý: chiều dài của str có thể lớn hơn n.
s1.compare(s2) So sánh chuỗi s1 với s2. Giá trị trả về là -1 nếu s1 < s2, bằng 0 nếu s1 == s2,
là 1 nếu s1 > s2.
s1.swap(s2) Hoán đổi nội dung hai chuỗi.

s1.insert(index, s2) Thêm chuỗi s2 vào s1 sau vị trí index.

CÁC IV.01 – Các lát cắt


Cho xâu s không chứa dấu cách.
Hãy thực hiện các công việc sau:
Đưa ra ký tự thứ 3 của xâu,
Đưa ra ký tự trước ký tự cuối cùng của s,
Đưa ra 5 ký tự đầu tiên của s,
Đưa ra toàn xâu s, trừ 2 ký tự cuối cùng,
Đưa ra các ký tự có chỉ số chẵn (chỉ số ký tự trong xâu đánh số bắt đầu từ 0),
Đưa ra các ký tự có chỉ số lẻ,
2
Đưa ra xâu đảo ngược vị trí của s,
Đưa ra xâu s theo trình tự đảo ngược, bắt đầu từ ký tự cuối cùng, đan xen một ký tự đưa ra, bỏ qua một
ký tự tiếp theo,
Đưa ra độ dài của xâu s.
Kết quả mỗi yêu cầu đưa ra trên một dòng, các dòng thông tin đưa ra không chứa dấu cách.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống, mỗi kết quả đưa ra trên một dòng.
Ví dụ:
INPUT OUTPUT
s = abcdefgh c
g
abcde
abcdef
aceg
bdfh
hgfedcba
hfdb
8

IV.02 – Số lượng từ
Từ là dãy ký tự liên tiếp không chứa dấu cách. Hai từ liên tiếp nhau trong xâu s cách đúng một ký tự dấu
cách.
Hãy đưa ra số lượng từ trong xâu s.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống một số nguyên – số lượng từ.
Ví dụ:
INPUT OUTPUT
abc 1234 gh 5 67 ijk 6

IV.03 – Xâu mới


Cho xâu s. Tạo xâu mới bằng cách tách s thành 2 phần:
s1 chứa các ký tự đầu của s, s2 – chứa các ký tự còn lại,
Độ dài s1 bằng hoặc lớn hơn 1 so với độ dài của s2.
Tạo xâu mới bằng cách đổi chổ s1 và s2 trong s.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống xâu nhận được sau biến đổi.
Ví dụ:
INPUT OUTPUT
123456789 678912345

3
IV.04 – Vị trí ký tự
Cho xâu s và ký tự c.
Nếu c xuất hiện trong s một lần – đưa ra vị trí của c trong s.
Nếu c xuất hiện nhiều lần trong s – đưa ra vị trí xuất hiện lần đầu tiên và lần cuối cùng của c trong s.
Nếu s không chứa c – đưa ra giá trị -1.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
abcdabacbcad 0 10
a

INPUT OUTPUT
abcdefgh 4
e

INPUT OUTPUT
12345678 -1
a

IV.05 – Lần thứ 2


Cho xâu s và ký tự c.
Nếu ký tự c xuất hiện trong s nhiều hơn một lần – đưa ra vị trí xuất hiện lần thứ 2, nếu c chỉ xuất hiện một
lần – đưa ra -1, nếu s không chứa c – đưa ra -2.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
123423456234 4
2

INPUT OUTPUT
123456789 -1
2

INPUT OUTPUT
123456 -2
a
IV.06 – Xóa xâu con
Cho xâu s và ký tự c.
Nếu c xuất hiện nhiều hơn một lần trong s thì xóa khỏi s xâu con các ký tự liên tiếp nhau bắt đầu lần xuất
hiện đầu tiên của c cho đến lần xuất hiện cuối cùng của ký tự này.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
abc2efgh2ijk2lmn abclmn
2

INPUT OUTPUT
Abcdefgh abcdefgh

4
5
IV.07 – Đảo ngược xâu con
Cho xâu s và ký tự c. Đảm bảo c xuất hiện không ít hơn 2 lần trong s (>=2)
Hãy đảo ngược xâu con từ lần xuất hiện đầu tiên của c đến lần xuất hiện cuối cùng của c trong s.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
123a1234a12345a678 123a54321a4321a678
a

IV.08 – Thay thế


Cho xâu s. Tạo xâu mới từ s bằng cách thay các ký tự ‘1’ và thay nó bằng xâu ‘one’ và giữ nguyên các ký tự
còn lại.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
32154198176 32one54one98one76

while (s.find(‘1’)!=-1) s.replace(s.find(‘1’),1,”one”);

IV.09 – Xóa ký tự
Cho xâu s. Tạo xâu mới từ s bằng xóa các ký tự bằng c.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
123a45a6a78 12345678
a
IV.10 – Thay thế ký tự
Cho xâu s và các ký tự c, cnew.
Thay thế trong s các ký tự c bằng cnew, trừ lần gặp đầu tiên và cuối cùng của c trong s.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
123a45a678a9a34 123a45A678A9a34
a
A
IV.11 – Rút ngắn xâu
Cho xâu s. Tạo xâu mới từ s bằng cách xóa các ký tự tại các vị trí chia hết cho 3.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
12345678901234 235689124

5
Cho văn bản t. Tìm và thay thể trong t xâu con w_old bằng xâu con w_new. Viêc thay thế sẽ được thực hiện
cho đến khi văn bản không còn chứa w_old.
Dữ liệu vào:
Dòng thứ nhất chứa văn bản t,
Dòng thứ hai chứa xâu w_old,
Dòng thứ hai chứa xâu w_new.
Hãy đưa ra văn bản sau khi thay thế.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
Bbc Aaa bBbc aBbcaaBbc DEF BBC Aaa bBBC aBBCaaBBC DEF
Bbc
BBC

void xuli(string s) // Ví dụ s='timpassword23243fs' -> ma=43


{
v=0;
ma=0; // Số nguyên tố lớn nhất
for (int i=0;i<s.length();i++)
{
int j=i; v=0;
while (j<s.length())
{if (s[j]<'1'||s[j]>'9') break; // Nếu là kí tự không lấy v
v=v*10+(s[j]-'0'); // Lấy các số từ vị trị i đến cuối xâu với i=12 thì v lấy giá trị v=2,23,232,2324,23243
if (ktra(v)==true) ma=max(ma,v); // i=13 thì v=3,32,324,3243
if (v>100000) break; // i=14 thì v=2,24,243
j++;}
}
}

Cho văn bản gồm các từ ghi trên một dòng. Từ là đoạn các ký tự liên tiếp không chứa dấu cách. Các từ cách
nhau ít nhất một dấu cách.
Hãy đưa ra từ có độ dài lớn nhất và độ dài của từ đó.
Dữ liệu: Nhập văn bản vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được trên một dòng gồm từ và độ dài từ tìm
được, hai đại lượng ghi cách nhau một dấu cách.
Ví dụ:
INPUT OUTPUT
a2 b12 c d01 e123456 d089 e123456 7

Palindrome là xâu mà kết quả đọc các ký tự từ trái sang phải giống kết quả đọc các ký tự từ phải sang trái.
Ví dụ s = ‘12344321’ là xâu palindrome.
Xét xâu chứa các ký tự có mã ASCII lớn hơn hoặc bằng 32.
Hãy đưa ra thông báo Yes nếu đó là xâu palindrome hoặc No trong trường hợp ngược lại.
Dữ liệu: Nhập xâu s vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
AbdcdbA hi ih AbdcdbA Yes

6
Cho số nguyên n ở hệ cơ số 10 và số nguyên b (1 < b ≤ 16), mỗi số trên một dòng. Hãy đưa ra n ở dạng cơ
số b. Với b > 10, khi cần thiết sẽ sử dụng các ký tự A, B, C, D, E, F để chỉ các số 10, 11, 12, 13, 14, 15 (ở
hệ thập phân).
Dữ liệu: Nhập vào từ thiết bị vào chuẩn của hệ thống, dòng đầu tiên chứa số nguyên n, dòng thứ 2 chứa số
nguyên xác định cơ số.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
446 1BE
16

Từ số nguyên không âm cho trước tạo số mới bằng cách cộng nó với số nhận được bằng cách đảo ngược vị
trí các chữ số, nếu tổng hai số này chưa có dạng palindrome thì áp dụng các phép biến đổi trên cho đến khi
nhận được số dạng palindrome và đưa ra số nhận được.
Số có dạng palindrome là số khi đọc các chữ số từ trái sang phải ta được kết quả như khi đọc từ phải sang
trái. Ví dụ 20902 là một số dạng palindrome.
Dữ liệu: Nhập số nguyên n vào từ thiết bị vào chuẩn của hệ thống.
Kết quả: Đưa ra thiết bị ra chuẩn của hệ thống kết quả nhận được.
Ví dụ:
INPUT OUTPUT
91 121

7
8

You might also like