基本思路,先扫描source字符串, 记录下所有匹配的子串在source字符串中的下标, 然后通过此下标将source字符串分成若干段, 将非匹配的子串部分分别拷贝到替换后的新的字符串数组中去。 替换后的新的字符串数组大小是可以计算出来的, 而且source字符串中的下标对应于替换后的新的字符串组中的下标也是可以计算出来的。
int* substr_check(const char* str, const char* pattern, int& size)
{
if (NULL == str ||
NULL == pattern) return NULL;
int* p = new int [100];
int index = -1;
int size_str = strlen(str);
int size_pattern = strlen(pattern);
for (int i = 0 ; i <= size_str - size_pattern;) {
int k = 0;
for (int j = i; k < size_pattern;) {
if ( str[j] == pattern[k]) {
j++;
k++;
} else {
break;
}
}
if (k == size_pattern) {
p[++index] = i;
i += size_pattern; //找到一个匹配后&#x