Cho một xâu str, một ký tự và một số nguyên dương N. Xâu str được lặp lại vô hạn. Mục tiêu là tìm số lần xuất hiện của ký tự trong str trong N ký tự đầu tiên của các lần lặp lại.
Nếu str là "abac", ký tự là ch='b' và N là 10.
Trong 10 ký tự đầu của "abacabacabacabac...", b xuất hiện 2 lần.
Lưu ý - Lấy str và ký tự ch trong cùng chữ hoa/thường.
Ví dụ
Đầu vào
str = "TPTTTT" ch = 'T' n = 12
Đầu ra
Số lần xuất hiện của ký tự trong chuỗi lặp lại là: 10
Giải thích
Số 'T' trong str là 5. Độ dài str là 6. Với n=12, str sẽ lặp đầy đủ 2 lần, nên số T là 6*2=12.
Đầu vào
str = "sets" ch = 's' n = 15
Đầu ra
Số lần xuất hiện của ký tự trong chuỗi lặp lại là: 7
Giải thích
Số 's' trong str là 2. Độ dài str là 4. Với n=15, str sẽ lặp đầy đủ 3 lần (12 ký tự đầu), số s trong đó là 3*2=6. Cho 3 ký tự còn lại (set), s xuất hiện 1 lần. Vậy tổng là 6+1=7.
Phương pháp sử dụng
Trong phương pháp này, chúng ta sẽ trước tiên đếm số lần xuất hiện của ký tự ch trong str. Sau đó chia độ dài str cho N. Chúng ta sẽ nhận được số lần lặp đầy đủ của str trong N ký tự bằng (N / độ dài str). Vì vậy, số lần xuất hiện của ch trong các lần lặp đó sẽ là phép nhân đơn giản. Đối với các ký tự còn lại (N % độ dài str), đếm ch trong str lại và cộng vào số lần trước.
- Nhận xâu
str. - Nhận
nkiểu nguyên,chkiểu ký tự và độ dàistrkiểu nguyên. - Hàm
occurrences_char(string str, int length, int n, char ch)nhậnstr,ch,nvà độ dàistrvà trả về số lầnchtrongnký tự đầu của xâu lặpstr. - Khởi tạo biến đếm ban đầu là 0.
- Sử dụng vòng lặp for đếm số lần
chtrongstr. Với mỗistr[i]==ch, tăng biến đếm. - Số lần lặp của
strtrongnsẽ làocc = n / length. - Số lần xuất hiện của
chtrong các lần lặp này sẽ làcount * occ. - Đối với
n % lengthký tự còn lại củastr, kiểm tra nếustr[i]==ch, nếu có tăng biến đếm. - Trả về biến đếm làm kết quả.
Ví dụ mã
#include <bits/stdc++.h>
using namespace std;
int occurrences_char(string str, int length, int n, char ch) {
int count = 0;
for (int i = 0; i < length; i++) {
if (str[i] == ch) {
count++;
}
}
int occ = n / length;
count = count * occ;
for (int i = 0; i < n % length; i++) {
if (str[i] == ch) {
count++;
}
}
return count;
}
int main() {
string str = "TPTTTT";
char ch = 'T';
int n = 12;
int length = str.size();
cout << "Số lần xuất hiện của ký tự trong chuỗi lặp lại là: " << occurrences_char(str, length, n, ch);
return 0;
}
Đầu ra
Nếu chạy mã trên, sẽ tạo ra đầu ra sau:
Số lần xuất hiện của ký tự trong chuỗi lặp lại là: 10