Tìm kiễm chuỗi trong chuỗi

Thảo luận trong 'Thuật toán' bắt đầu bởi integer, 4 Tháng ba 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    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 ?
    hongoctrien, BigZero, KunMinzi1 người khác thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí