ホームページ  >  記事  >  バックエンド開発  >  数値文字列から文字を削除して 8 で割り切れるようにする C++ プログラム

数値文字列から文字を削除して 8 で割り切れるようにする C++ プログラム

WBOY
WBOY転載
2023-08-28 09:21:06905ブラウズ

数値文字列から文字を削除して 8 で割り切れるようにする C++ プログラム

数値を文字列形式で指定した場合、0 個以上の要素を削除した後、8 で割り切れるようになる場所を見つける必要があります。は文字列の部分列であり、8 で割り切れます。変更された文字列を返すか、不可能な場合は -1 を返します。

割り算の法則によれば、最後の 3 桁が 8 で割り切れる数値は、8 でも割り切れます。たとえば、56992992 と 476360 は 8 で割り切れますが、2587788 は割り切れません。結果が整数の場合、元の数値は 8 で割り切れます。

メソッドを詳しく説明するいくつかの入力シナリオを見てみましょう -

このメソッドに渡された入力が 8 で割り切れる部分文字列を含む数値文字列である場合、結果リストで 8-

で割り切れる部分文字列を取得できます。 リーリー

メソッドへの入力が 8 で割り切れる部分文字列を含まない数値文字列である場合、出力結果は -

として返されます。 リーリー ###アルゴリズム###

    文字列入力は反復処理され、部分文字列が 8 の倍数であるかどうかがチェックされます。
  • 入力に結果の部分文字列が存在する場合、その部分文字列が出力として返されます。
  • 部分文字列が見つかった場合、プログラムは終了します。そうでない場合は、部分文字列が見つかるまでステップ 2 が繰り返されます。
  • 入力に 8 で割り切れる部分文字列がない場合、返される出力は -1 です。
  • ###例###
  • 次の C プログラムでは、8 で割り切れる文字列に変換できる文字列と変換できない文字列の 2 つの文字列を取得し、それぞれの場合の出力を求めます。 0、8、16、24、32...1000 のように 8 の倍数で 0 から 1000 までを反復し、この数値が指定された文字列の部分列として存在するかどうかを確認できます。
リーリー ###出力### リーリー

上記の出力でわかるように、95258 から 9525 が削除され、74516 から 745 が削除され、左側の数値が 8 で割り切れるようになります。

###結論###

ご覧のとおり、簡単な観察の後は、サブセットが存在するかどうかを確認するだけで済みます。文字列にサブシーケンスが含まれているかどうかをチェックします。最悪の場合は文字列全体がチェックされます。したがって、長さ n の数値文字列が与えられた場合、最悪の場合の時間計算量は O(126*n)、つまり O(n) になります。

以上が数値文字列から文字を削除して 8 で割り切れるようにする C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。