Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 다른 문자열에서 한 문자열의 모든 발생 인덱스 찾기

<시간/>

문자열 str과 또 다른 하위 문자열 sub_str이 있다고 가정하고 str에서 sub_str의 모든 발생에 대한 인덱스를 찾아야 합니다. str이 "aabbababaabbbbabbaaabba"이고 sub_str이 "abb"라고 가정하면 인덱스는 1 9 13 18이 됩니다.

이 문제를 해결하기 위해 C++ STL에서 substr() 함수를 사용할 수 있습니다. 이 함수는 검사를 시작할 위치의 초기 위치와 sub_str의 길이가 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