Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Вычисление длины строки
- unsigned strlen(const char *str)
- {
- unsigned n = 0;
- for (; *str != 0; str++) {
- n++;
- }
- return n;
- }
- //Посимвольное сравнение части text строки и паттерна целиком
- bool check(const char *text, const char *pattern) {
- for (; *pattern != 0; pattern++, text++) {
- if (*text == *pattern) {
- continue;
- }
- else {
- return false;
- }
- }
- return true;
- }
- int strstr1(const char *text, const char *pattern)
- {
- if (strlen(pattern) != 0) {
- int res = 0;
- int text_len = strlen(text);
- int pattern_len = strlen(pattern);
- for (int i = 0; i < text_len - (text_len % pattern_len); i++) { //"Priv PrPr" "riv PrPr" "iv PrPr" ...
- if (check(text + i, pattern) == true) { //и это сравнивается с "Pr"
- res++; //text_len - (text_len % pattern_len) раз
- }
- }
- return res;
- }
- return strlen(text);
- }
- int main()
- {
- const char str1[25] = "Priv PrPr";
- const char str2[] = "Pr";
- int res = strstr1(str1, str2);
- std::cout << res << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement