用 C++ 統計以給定模式結尾的字串
給定一個字串陣列 str[] 和一個模式字串 pat。目標是找到 str[] 中以模式 pat 結尾的字串元素。
我們將遍歷 str 的每個字串,並將最後一個字元與 pat 進行比較。如果匹配,則遞增
讓我們透過示例來理解。
輸入
str[]={ “kittens”, “hens”, “deers”, “dogs” } pat=”ens”輸出
Strings that end with given pattern: 2
解釋
Strings “kitt-ens” and “h-ens” end with “ens”.
輸入
str[]={ “tickets”, “wickets”, “bats”, “cricket” } pat=”et”輸出
Strings that end with given pattern: 1
解釋
Strings “wick-et” ends with “et”.
下面程式中使用的方案如下
我們有字串陣列 str[] 和一個模式字串 pat。
N 是 str[] 中字串的數量。
函式 endPattern(string str[], int n, string ptr) 返回 str 中以給定模式結尾的字串的數量
將初始變數 count 設定為 0。
使用 for 迴圈從 i=1 遍歷到 i<n
將每個字串 str[i] 作為 s。令 slen 為 s.length()。
取 plen=ptr.lenght()。取 flag=1。
現在將 plen 和 slen 分別減 1 以獲取字串 s 和模式 ptr 的最後一個索引。
使用 while 迴圈檢查直到 plen>=0。
如果任何 s[slen]!=ptr[plen]。將 flag 設定為 0 並中斷迴圈。否則,遞減 plen 和 slen 以檢查從末尾開始的下一個字元。
在 while 迴圈結束後,如果 flag 仍然為 1,則遞增 count,因為 ptr 出現在 s 中。
在所有迴圈結束後返回 count,即以給定模式結尾的字串的數量。
示例
#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;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Strings that end with given pattern: 3
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP