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

ค้นหาดัชนีการเกิดขึ้นของสตริงหนึ่งในสตริงอื่นใน C++


สมมติว่าเรามีสตริง str และสตริงย่อยอื่น sub_str เราต้องหาดัชนีสำหรับการเกิดขึ้นทั้งหมดของ sub_str ใน str สมมติว่า str คือ “aabbababaabbbabbaaabba” และ sub_str คือ “abb” ดัชนีจะเป็น 1 9 13 18

เพื่อแก้ปัญหานี้ เราสามารถใช้ฟังก์ชัน substr() ใน C++ STL ฟังก์ชันนี้ใช้ตำแหน่งเริ่มต้นจากตำแหน่งที่จะเริ่มตรวจสอบ และความยาวของสตริงย่อย หากเท่ากับ sub_str จะส่งกลับตำแหน่ง

ตัวอย่าง

#include<iostream>
using namespace std;
void substrPosition(string str, string sub_str) {
   bool flag = false;
   for (int i = 0; i < str.length(); i++) {
      if (str.substr(i, sub_str.length()) == sub_str) {
         cout << i << " ";
         flag = true;
      }
   }
   if (flag == false)
      cout << "NONE";
}
int main() {
   string str = "aabbababaabbbabbaaabba";
   string sub_str = "abb";
   cout << "Substrings are present at: ";
   substrPosition(str, sub_str);
}

ผลลัพธ์

Substrings are present at: 1 9 13 18