Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับสตริงที่ลงท้ายด้วยรูปแบบที่กำหนดใน C++


เราได้รับอาร์เรย์ของสตริง str[] และรูปแบบสตริง pat เป้าหมายคือการหาองค์ประกอบสตริงของ str[] ที่มีแพทเทิร์นตบที่ส่วนท้าย

เราจะสำรวจแต่ละสตริงของ 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 ที่ลงท้ายด้วยรูปแบบที่กำหนด

  • นับตัวแปรเริ่มต้นเป็น 0

  • เคลื่อนที่โดยใช้ for loop จาก i=1 ถึง i

  • ใช้แต่ละสตริง str[i] เป็น s ให้ slen เป็น s.length()

  • ใช้ plen=ptr.lenght() รับแฟล็ก=1.

  • ตอนนี้กำหนด plen และ slen ทีละ 1 เพื่อรับดัชนีสุดท้ายของสตริง s และรูปแบบ ptr

  • ใช้ while loop ตรวจสอบจนเต็ม>=0.

  • หากมี s[slen]!=ptr[plen]. ตั้งค่า flag=0 และทำลายลูป มิฉะนั้นให้ลด plen และ slen เพื่อตรวจสอบอักขระถัดไปจากจุดสิ้นสุด

  • หลังจาก while สิ้นสุดลง หากแฟล็กยังคงเป็น 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 <<"Strings that end with given pattern: "<<endPattern(str,N,patrn);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Strings that end with given pattern: 3