在 C++ 中查找一个字符串在另一个字符串中所有出现位置的索引


假设我们有字符串 str,和另一个子串 sub_str,我们必须找到 sub_str 在 str 中所有出现位置的索引。假设 str 是 “aabbababaabbbabbaaabba”,sub_str 是 “abb”,那么索引将是 1 9 13 18。

为了解决此问题,我们可以在 C++ STL 中使用 substr() 函数。此函数接受子字符串将开始检查的初始位置和子字符串的长度,如果与 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

更新于:2019 年 12 月 19 日

超过 3K 的浏览量

开启您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.