Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các chuỗi kết thúc bằng mẫu đã cho trong C ++

Chúng ta được cung cấp một mảng chuỗi str [] và một chuỗi mẫu pat. Mục đích là tìm các phần tử chuỗi của str [] có mẫu pat ở cuối.

Chúng tôi sẽ duyệt qua từng chuỗi str và so sánh các ký tự cuối cùng với pat. Nếu chúng khớp với mức tăng

Hãy cùng hiểu với các ví dụ.

Đầu vào

str[]={ “kittens”, “hens”, “deers”, “dogs” } pat=”ens”

Đầu ra

Strings that end with given pattern: 2

Giải thích

Strings “kitt-ens” and “h-ens” end with “ens”.

Đầu vào

str[]={ “tickets”, “wickets”, “bats”, “cricket” } pat=”et”

Đầu ra

Strings that end with given pattern: 1

Giải thích

Strings “wick-et” ends with “et”.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi xâu chuỗi chuỗi str [] và một chuỗi mẫu pat.

  • N không phải là chuỗi trong str [].

  • Hàm endPattern (string str [], int n, string ptr) trả về số lượng các chuỗi trong str kết thúc bằng mẫu đã cho

  • Lấy số lượng biến ban đầu là 0.

  • Di chuyển bằng vòng lặp for từ i =1 đến i

  • Lấy mỗi chuỗi str [i] là s. Gọi tên là s.length ().

  • Lấy plen =ptr.lenght (). Lấy cờ =1.

  • Bây giờ hãy giảm dần và giảm đi 1 để nhận các chỉ mục cuối cùng của chuỗi s và mẫu ptr.

  • Sử dụng kiểm tra vòng lặp while cho đến khi đủ> =0.

  • Nếu có s [sln]! =Ptr [plen]. Đặt cờ =0 và ngắt vòng lặp. Nếu không thì giảm dần và xoay để kiểm tra ký tự tiếp theo từ cuối.

  • Sau khi thời gian kết thúc, nếu cờ vẫn là 1 thì số gia tăng khi ptr xảy ra trong s.

  • Trả về số lượng sau khi kết thúc tất cả các vòng lặp là số lượng các chuỗi kết thúc bằng mẫu đã cho.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int endPattern(string str[], int n, string ptr){
   int count=0;
   for(int i=0;i<n;i++){
      string s=str[i];
      int slen=s.length();
      int plen=ptr.length();
      int flag=1;
      slen--; //last index
      plen--;
      while(plen>=0){
         if(ptr[plen]!=s[slen]){
            flag=0;
            break;
         }
         plen--;
         slen--;
      }
      if(flag==1)
         { count++; }
   }
   return count;
}
int main(){
   string patrn = "pes";
   int N = 4;
   string str[] = { "stripes", "cars", "ripes", "pipes" };
   cout <<"Strings that end with given pattern: "<<endPattern(str,N,patrn);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Strings that end with given pattern: 3