给我们一个字符串数组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