c++1.编写程序,对于任意两个串:主串和子串,找出子串在主串中的位置。 如:主串为a b a b c a b,子串为abc,找输出其位置为3;若子串为abd,则提示子串在主串中不存在。
时间: 2024-06-19 22:03:02 浏览: 77
String-matching-operation.rar_Matching_operation_输入主串
可以使用暴力匹配算法,逐一比较主串和子串的每一个字符,找到第一个匹配的字符后,再一一比较后面的字符是否相同,若全部匹配成功,则说明子串在主串中出现过。
下面是具体的实现过程:
```c++
#include <iostream>
#include <string>
using namespace std;
int findSubstr(string str, string substr) {
int str_len = str.size();
int substr_len = substr.size();
for (int i = 0; i <= str_len - substr_len; i++) {
int j = 0;
while (j < substr_len && str[i+j] == substr[j]) {
j++;
}
if (j == substr_len) {
return i;
}
}
return -1;
}
int main() {
string str = "ababcab";
string substr = "abc";
int pos = findSubstr(str, substr);
if (pos == -1) {
cout << "子串在主串中不存在" << endl;
} else {
cout << "子串在主串中的位置为:" << pos << endl;
}
return 0;
}
```
如果子串存在于主串中,输出结果为:
```
子串在主串中的位置为:2
```
如果子串不存在于主串中,输出结果为:
```
子串在主串中不存在
```
阅读全文