Với đề sau:Viết chương trình kiểm tra ‘‘hello’’ có trong xâu s hay không*?(không phân biệt chữ hoa và chữ thường) Vấn đề cần quan tâm ở đây là tìm kiếm chuỗi trong chuỗi. Thuật toán dưới đây sẽ duyệt chuỗi, gặp chữ 'h' hoặc 'H' sẽ copy 5 ký tự tiếp theo vào mảng tạm , sau đó so sánh với "hello". Vấn đề thứ 2 là không phân biệt hoa thường. ở đây dùng strupr(); --> chuyển về viết hoa để so sánh. Mã: #include<iostream> #include<string.h> #include<cstdio> using namespace std; main() { char a[50],b[6],d[6]="HELLO"; cout<<"\nNhap chuoi: "; gets(a); int slen=strlen(a); for(int i=0;i<slen-4;i++) { if(a[i]=='h'||a[i]=='H') { int k=i; for(int j=0;j<5;j++) { b[j]=a[k]; k++; } } if(strcmp(b,d)==0) break; } strupr(b); if(strcmp(b,d)==0) cout<<"\nCo"; else cout<<"\nKhong"; } Thuật toán mới chỉ giải quyết được vấn đề, song vẫn chưa tối ưu lắm. --> cần một thuật toán tối ưu hơn ?