Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / C/C++ / Tìm chuỗi con trong 1 chuỗi

Tìm chuỗi con trong 1 chuỗi

Yêu cầu: Tìm chuỗi con trong 1 chuỗi khác.

  • Nếu tìm thấy trả về vị trí xuất hiện đầu tiền của chuỗi con trong “chuỗi cha”.
  • Nếu không tìm thấy trả về -1

Thuật toán:

B1: Lần lượt so sánh chuỗi con cần tìm với N kí tự của chuỗi cha (N = chiều dài chuỗi con cần tìm kiếm, dùng hàm strncmp())

B2. Nếu không tìm thấy, dịch con trỏ tới phần tử tiếp theo của chuỗi cha. Quay lại bước 1.

B3. Nếu tìm thấy trả về vị trí xuất hiện của chuỗi con trong chuỗi cha.

Hoặc các bạn có thể sử dụng hàm có sẵn: strstr()

Code:
/************************Find sub-string**********************/
#include "stdio.h"
#include "conio.h"
#include "string.h"


int findsubstr(const char *str, char *sub);

void main()
{
char str[] = "ngoton.it blog for developer";
char sub1[] = "blog";
char sub2[] = "dev";
char sub3[] = "blog for developer";
char sub4[] = ".";
printf("str = '%s'\n", str);
printf("'%s' at %d\n", sub1, findsubstr(str, sub1));
printf("'%s' at %d\n", sub2, findsubstr(str, sub2));
printf("'%s' at %d\n", sub3, findsubstr(str, sub3));
printf("'%s' at %d\n", sub4, findsubstr(str, sub4));
getch();
}

/************************************************
Find sub-string in string
Return: -1 if not found
x (starting point in string) if found
*************************************************/
int findsubstr(const char *str, char *sub)
{
const char *p = str;
int len = strlen(sub);
while(*p != NULL)
{
if (strlen(p) >= len)
{
if (strncmp(p, sub, strlen(sub)) == 0)
{
return (p - str);
}
}
else
{
break;
}
p++;
}
return -1;
}

Kết quả:

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Yêu cầu: Xây dựng hàm bạn để tính diện tích hình chữ nhật Code: Giải …

Leave a Reply

avatar
  Subscribe  
Notify of