ホームページ  >  記事  >  バックエンド開発  >  。文字列を回転する

。文字列を回転する

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 12:37:02410ブラウズ

. Rotate String

796。文字列を回転

難易度: 簡単

トピック: 文字列、文字列マッチング

2 つの文字列 s とゴールを指定すると、s でいくつかの シフト を行った後に s がゴールになることができる場合に限り、true を返します。

s の シフト は、s の左端の文字を右端の位置に移動することで構成されます。

  • たとえば、s = "abcde" の場合、1 回シフトすると "bcdea" になります。

例 1:

  • 入力: s = "abcde"、目標 = "cdeab"
  • 出力: true

例 2:

  • 入力: s = "abcde"、目標 = "abced"
  • 出力: false

制約:

  • 1
  • s とゴールは英小文字で構成されます。

解決策:

文字列連結の特性を利用できます。具体的には、文字列 s をそれ自体 (つまり s s) と連結すると、s のすべての可能な回転がその連結された文字列内の部分文字列として表示されます。これにより、goal が s s の部分文字列であるかどうかを簡単にチェックできます。

このソリューションを PHP で実装してみましょう: 796。文字列を回転

<?php
/**
 * @param String $s
 * @param String $goal
 * @return Boolean
 */
function rotateString($s, $goal) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
?>

説明:

  1. 長さのチェック: まず、s とゴールの長さが同じかどうかを確認します。そうでない場合は、 s をゴールに変換することは不可能であるため、すぐに false を返します。

  2. 連結: 文字列 s をそれ自体と連結して doubleS を作成します。

  3. 部分文字列チェック: strpos() 関数を使用して、doubleS 内の部分文字列としてゴールが存在するかどうかを確認します。存在する場合は true を返します。それ以外の場合は false を返します。

複雑:

  • 時間計算量: O(n)、n は文字列の長さです。連結と部分文字列検索によるものです。
  • 空間複雑度: 連結された文字列の場合は O(n)。

このソリューションは、ある文字列がローテーションによって別の文字列になれるかどうかを効率的に判断します。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が。文字列を回転するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。