ในบทความนี้ เราจะได้รับสองสตริง และเราจำเป็นต้องค้นหาจำนวนสตริงย่อยของสตริงที่ 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 และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์