计算以C ++中给定模式结尾的字符串

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