给我们一个字符串数组str []和一个模式字符串pat。目的是找到str []的字符串元素,这些字符串元素的末尾有patt pat。
我们将遍历str的每个字符串,并将最后一个字符与pat进行比较。如果它们匹配增量
让我们通过示例来理解。
输入值
str[]={ “kittens”, “hens”, “deers”, “dogs” } pat=”ens”输出结果
以给定模式结尾的字符串: 2
说明
Strings “kitt-ens” and “h-ens” end with “ens”.
输入值
str[]={ “tickets”, “wickets”, “bats”, “cricket” } pat=”et”输出结果
以给定模式结尾的字符串: 1
说明
Strings “wick-et” ends with “et”.
我们将数组str []和模式字符串pat组成字符串。
N不是str []中的字符串。
函数endPattern(string str [],int n,string ptr)返回以给定模式结尾的str中的字符串数
将初始变量计数设为0。
使用for循环从i = 1到i <n遍历
将每个字符串str [i]当作s。设slen为s.length()。
取plen = ptr.lenght()。以flag = 1。
现在将plen和slen递减1,以获得字符串s和pattern ptr的最后一个索引。
使用while循环检查,直到plen> = 0。
如果有s [slen]!= ptr [plen]。设置标志= 0并中断循环。否则递减并倾斜以检查下一个字符。
在while结束之后,如果flag仍为1,则由于ptr在s中发生,所以递增计数。
在所有循环结束后返回计数,即以给定模式结束的字符串计数。
#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 <<"以给定模式结尾的字符串: "<<endPattern(str,N,patrn);
return 0;
}输出结果
如果我们运行上面的代码,它将生成以下输出-
以给定模式结尾的字符串: 3