Cでstrstr関数を実装するための効率的なプログラムを作成します strstr() 関数は、別の文字列で最初に出現する文字列へのポインタを返します。

のプロトタイプ strstr() は:

const char* strstr(const char* X, const char* Y);

1.反復実装

以下は、の反復実装です strstr() 関数。の最初の出現へのポインタを返します YX またはnullポインタの場合 Y の一部ではありません X。このソリューションの時間計算量は O(m.n) どこ mn それぞれ文字列XとYの長さです。

ダウンロード  コードを実行する

出力:

Ace the Technical Interviews

2.使用する memcmp() 関数

以下は strstr を使用した実装 memcmp() コードで定義された関数。このソリューションの時間計算量は変わりません O(m.n).

ダウンロード  コードを実行する

出力:

Ace the Technical Interviews

3. KMPアルゴリズムの使用(効率的)

使用することもできます KMPアルゴリズム この問題を解決するために O(m + n) 複雑さ、ここで mn 文字列の長さです XY、 それぞれ。

ダウンロード  コードを実行する

出力:

Ace the Technical Interviews

以上です strstr() Cでの実装。

 
こちらも参照:

Javaでstrstr関数を実装する