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

นับสตริงย่อยที่ขึ้นต้นด้วยอักขระ X และลงท้ายด้วยอักขระ Y ใน C++


เราได้รับสตริง str เป้าหมายคือการนับจำนวนสตริงย่อยใน str ที่มีอักขระเริ่มต้นเหมือนกับอักขระ X และอักขระลงท้ายเหมือนกับอักขระ Y ตัวอย่างเช่น หากอินพุตคือ "artact" และ X='a' และ Y='t' สตริงย่อยจะเป็น "art", "act", "artact" นับเป็น 3

ให้เราเข้าใจด้วยตัวอย่าง

ป้อนข้อมูล − str=”abcccdef” X=’a’ Y=’c’

ผลผลิต −จำนวนสตริงย่อยที่ขึ้นต้นด้วยอักขระ X และลงท้ายด้วย Y คือ − 3

คำอธิบาย − สตริงย่อยจะเป็น

“abc”, “abcc”, “abccc”. Total 3.

ป้อนข้อมูล − str=”พายุ” X=’t’ Y=’t’

ผลผลิต − จำนวนสตริงย่อยที่ขึ้นต้นด้วยอักขระ X และลงท้ายด้วย Y คือ − 3

คำอธิบาย − สตริงย่อยจะเป็น −

“t” , “tempest” , “t”. Total 3

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เราจะสำรวจสตริงและจำนวนที่เพิ่มขึ้นของ X หากพบ Y ให้เพิ่มจำนวน X ลงในจำนวนสตริงที่ขึ้นต้นด้วย X และลงท้ายด้วย Y

  • ใช้สตริง str. คำนวณความยาวเป็น str.size()

  • ฟังก์ชัน X_Y(string str, int length, char X, char Y) รับสตริง str, อักขระ X, Y และคืนค่าจำนวนสตริงย่อยของ str ที่ขึ้นต้นด้วย X และลงท้ายด้วย Y

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

  • ใช้ x_total เป็นจำนวนอักขระ X ใน str.

  • Traverse str ใช้ for loop จาก i=0 ถึง i<ความยาว

  • ถ้า str[i]==X ให้นับ X เพิ่มขึ้นเป็น str (x_total++)

  • ถ้า str[i]==Y ให้เพิ่ม x_total เพื่อนับ หากไม่มี X อยู่ x_total จะเป็น 0 มิฉะนั้น Y คืออักขระสิ้นสุดของสตริงย่อยที่เริ่มต้นจาก X

  • ผลตอบแทนนับเป็นผลลัพธ์ที่ต้องการ

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int X_Y(string str, int length, char X, char Y){
   int count = 0;
   int x_total = 0;
   for (int i = 0; i < length; i++){
      if(str[i] == X){
         x_total++;
      }
      if (str[i] == Y){
         count = count + x_total;
      }
   }
   return count;
}
int main(){
   string str = "defaabbcchhkl";
   int length = str.size();
   char X = 'd';
   char Y = 'a';
   cout<<"Count of substrings that starts with character X and ends with character Y are: "<<X_Y(str, length, X, Y);
   return 0;
}

ผลลัพธ์

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

Count of substrings that starts with character X and ends with character Y are: 2