-5

文字列が回文かどうかをチェックしたい場合、最短の行数で実行できるように、2 つの同時ループを使用して実装するにはどうすればよいでしょうか?

4

2 に答える 2

6

これはほぼ間違いなく宿題なので、ここではコードなしでアプローチを説明します。

2 つのループは必要ありません。2 つのループ変数が必要です。最初の文字を単語の先頭から開始し、2 番目の文字を単語の末尾から開始し、ループ インデックスの文字を比較し、異なる場合は false を返します。文字が同じ場合は、前方インデックスを前方に、後方インデックスを後方に進めて、次の繰り返しに移動します。前方インデックスが後方インデックス以上になったら停止します。

以下は、1 つのループで 2 つのループ変数を使用できる構文です。

for (int front = 0, back = s.size() ; front < back ; front++, back--) ...
于 2012-07-17T19:38:03.460 に答える
2

免責事項:これは単なるスレッド化された代替手段であり、このソリューションの使用はお勧めしません

2 つのスレッドを開始して、queue.

最初のスレッドは最初から繰り返し、要素をキューにプッシュします。

2 つ目は最後から開始し、キューの先頭から要素をポップします (一致する場合)。

要素が一致しない場合、または単語の途中で停止します。要素が一致しなかった場合、または最後にキューが空でない場合、それは回文ではありません。

これには深刻な同期が必要であることに注意してください。このようにしないでください。通常どおりに解析してください...パフォーマンスの向上があるとは思えません。

于 2012-07-17T19:42:03.743 に答える