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

C++ หาจำนวนซับสตริงของสตริงหนึ่งที่ปรากฏในอีกสตริงหนึ่ง


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

Input : string1 = "fogl"  string2 = "google" Output : 6 Explanation : ซับสตริงของ string1 ที่อยู่ใน string2 คือ ["o", "g", "l", "og", "gl", "ogl"]
Input : string1 = "ajva"  string2 = "java" Output : 5 Explanation : ซับสตริงของ string1 ที่อยู่ใน string2 คือ ["a", "j", "v", "a", "va"]

วิธีการแก้ปัญหา

มาอภิบัติวิธีแก้ปัญหานี้: จากตัวอย่าง เราเข้าใจว่าต้องหาซับสตริงทั้งหมดของ string1 แล้วตรวจสอบแต่ละตัวว่าอยู่ใน string2 หรือไม่ ถ้าอยู่เพิ่มตัวนับ และหลังจบการวนลูปตรวจสอบผลลัพธ์ในตัวนับ

โค้ด C++ สำหรับวิธีการข้างต้น

นี่คือโค้ด C++ ที่ใช้แก้ปัญหานี้

ตัวอย่าง

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

int main() { 
    string str1 = "ajva"; 
    string str2 = "java"; 
    int count = 0; 
    int n = str1.length(); 
    for (int i = 0; i < n; i++) { 
        string str3; 
        for (int j = i; j < n; j++) { 
            str3 += str1[j]; 
            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 ตรวจสอบแต่ละซับสตริงว่าอยู่ใน str2 หรือไม่ ถ้าอยู่เพิ่มตัวนับ 1 แล้วพิมพ์ผลลัพธ์จากตัวแปร count

สรุป

บทความนี้เสนอวิธีง่ายในการหาจำนวนซับสตริงของสตริงหนึ่งที่ปรากฏในอีกสตริงหนึ่ง สามารถเขียนโปรแกรมเดียวกันในภาษาอื่น เช่น C, Java, Python ได้ หวังว่าจะเป็นประโยชน์