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

ค้นหาจำนวนสตริงย่อยของหนึ่งสตริงที่มีอยู่ในรายการอื่นโดยใช้ C++


ในบทความนี้ เราจะได้รับสองสตริง และเราจำเป็นต้องค้นหาจำนวนสตริงย่อยของสตริงที่ 1 ที่สามารถพบได้ในสตริงที่ 2 (สตริงย่อยที่แน่นอนสามารถเกิดขึ้นได้หลายครั้ง) ตัวอย่างเช่น

Input : string1 = “fogl”
   string2 = “google”
Output : 6
Explanation : substrings of string1 present in string2 are [ “o”, “g”, “l”, “og”, “gl”,
“ogl” ].

Input : string1 = “ajva”
   string2 = “java”
Output : 5
Explanation : substrings of string1 present in string2 are [ “a”, “j”, “v”, “a”, “va” ].

แนวทางในการหาทางออก

มาพูดคุยกันว่าเราจะสามารถแก้ปัญหานี้ในการค้นหาสตริงย่อยหลายๆ ตัวที่อยู่ในสตริงอื่นได้อย่างไร ดูตัวอย่าง; เราเข้าใจว่าก่อนอื่นเราต้องดูสตริงย่อยทั้งหมดของ string1 แล้วเราต้องตรวจสอบแต่ละสตริงย่อยว่ามีอยู่ในสตริงอื่นหรือไม่ ถ้าใช่ให้เพิ่มตัวนับและหลังจากดำเนินการทั้งสตริงให้ตรวจสอบผลลัพธ์ที่เก็บไว้ในตัวนับ .

โค้ด C++ สำหรับแนวทางด้านบน

นี่คือไวยากรณ์ C++ ที่เราสามารถใช้เป็นอินพุตเพื่อแก้ปัญหาที่กำหนดได้ -

ตัวอย่าง

#include<iostream>
#include<string>
using namespace std;

int main() {
   string str1 = "ajva";
   string str2 = "java";
   int count = 0;// counter to store result
   int n = str1.length();

   for (int i = 0; i < n; i++) {

      string str3; // string3 is initialised to store all substrings of string1
      for (int j = i; j < n; j++) {
         str3 += str1[j];

         // checking whether substring present in another string or not
         if (str2.find(str3) != string::npos)
            count++;
      }
   }
   cout << "Number of substrings of one string present in other : "<< count;
   return 0;
}

ผลลัพธ์

Number of substrings of one string present in other : 5

ทำความเข้าใจโค้ด

อย่างแรก ในโค้ดนี้ เราจะให้ค่าแก่ทั้งสตริงและเริ่มต้นตัวนับด้วย 0 เรากำลังดำเนินการผ่านสตริงทั้งหมดและค้นหาสตริงย่อยทั้งหมดที่เป็นไปได้ของ str1 และจัดเก็บไว้ใน str3 จากนั้นเราตรวจสอบแต่ละสตริงย่อยของ str1 ไม่ว่าจะอยู่ใน str2 หรือไม่ก็ตาม ถ้าใช่ ให้เพิ่มตัวนับขึ้น 1 และในที่สุดเราจะพิมพ์ผลลัพธ์ที่เก็บไว้ในตัวแปรตัวนับ

บทสรุป

บทความนี้พบวิธีแก้ปัญหาง่ายๆ ในการค้นหาจำนวนสตริงย่อยของสตริงหนึ่งที่มีอยู่ในสตริงอื่น เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์