文字列操作の分野では、パターンを識別し、意味のある部分文字列を抽出することが一般的なタスクです。興味深い問題には、隣接する文字が隣接する英語文字でない最長の部分文字列を見つけることが含まれます。この記事では、C を使用したこの問題の効率的な解決策を詳しく掘り下げ、明確な説明とサンプル テスト ケースを提供します。
###問題文###
小文字の英字の文字列が与えられた場合、隣接する文字が英字にならない最長の部分文字列の長さを見つける必要があります。たとえば、文字列「abacabx」では、この条件を満たす最長の部分文字列は長さ 3 の「abx」です。
メソッドとアルゴリズム
この問題を解決するには、貪欲な方法を使用できます。指定された文字列を反復処理し、現在の文字と前の文字が隣接する英字であるかどうかを確認します。そうであれば、新しい部分文字列を開始します。それ以外の場合は、既存の部分文字列を展開します。最長部分文字列の長さが以前の最大値を超えるたびにその最長部分文字列を更新することで、望ましい結果を見つけることができます。
C実装
これは問題を解決する C コードです &minus,
リーリー
###出力###
リーリー
コードの説明
関数 findLongestSubstring は、入力文字列をパラメーターとして受け取り、隣接しない英語のアルファベット文字の最長の部分文字列の長さを返します。
maxLength と currentLength をそれぞれ 0 と 1 に初期化します。次に、2 番目の文字から始まる文字列を繰り返し処理します。現在の文字と前の文字の間の絶対的な差が 1 に等しくない場合、currentLength が増加して現在の部分文字列が拡張されます。それ以外の場合、現在の長さが以前の最大値を超えている場合は、maxLength を更新し、currentLength を 1 にリセットします。
最後に、見つかった最大長を返します。 main 関数では、サンプル入力文字列「abacabx」を提供し、最長の部分文字列の長さを出力します。
テストケースの例
解決策を示すために、文字列「abacabx」の例を考えてみましょう。
######入力######
リーリー
この例では、隣接する英語のアルファベット文字を含まない最長の部分文字列は「abx」で、長さは 3 です。
###結論は###
シンプルで効率的な方法を採用することで、C を使用して隣接しない最長の英文字部分文字列を見つける問題を解決することに成功しました。提供されているコードと説明を理解すると、文字列操作に関連する同様の問題を解決できるようになります。
以上が隣接する文字に隣接する英字がない最長の部分文字列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。