Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số lần xuất hiện của ký tự trong chuỗi lặp lại trong C++


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 n kiểu nguyên, ch kiểu ký tự và độ dài str kiểu nguyên.
  • Hàm occurrences_char(string str, int length, int n, char ch) nhận str, ch, n và độ dài str và trả về số lần ch trong n ký tự đầu của xâu lặp str.
  • Khởi tạo biến đếm ban đầu là 0.
  • Sử dụng vòng lặp for đếm số lần ch trong str. Với mỗi str[i]==ch, tăng biến đếm.
  • Số lần lặp của str trong n sẽ là occ = n / length.
  • Số lần xuất hiện của ch trong các lần lặp này sẽ là count * occ.
  • Đối với n % length ký tự còn lại của str, kiểm tra nếu str[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