题解 | #统计字符串中子串出现的次数#
统计字符串中子串出现的次数
https://www.nowcoder.com/practice/9eb684f845a446f3b121472de2ea75cd
#include <iostream> #include <cstring> using namespace std; int main() { char str[100] = { 0 }; char substr[100] = { 0 }; cin.getline(str, sizeof(str)); cin.getline(substr, sizeof(substr)); int count = 0; // write your code here...... // 双指针法 char* p = str; char* q = substr; while(*p != '\0') { if(*p == *q) { //判断两个字符串同时结束的情况 if(*(p + 1) == '\0' && *(q + 1) == '\0') count++; p++; q++; } if(*p != *q) { if(*q == '\0') { count++; p -= q - substr - 1; //p也回溯,解决重叠问题 } else p++; q = substr; } } cout << count << endl; return 0; }