ホームページ  >  記事  >  バックエンド開発  >  暗号化された文字列

暗号化された文字列

王林
王林転載
2023-09-08 10:37:021075ブラウズ

暗号化された文字列

暗号化とは、特定の技術または特定の手順を使用してデータを変更し、別の種類の情報に変更したり、以前の情報を直接収集できないようにする技術です。暗号化の場合、特定の暗号化タイプに固定された特定の手順に従う必要があります。

この質問では文字列を取得し、指定された手順に従って暗号化する必要があります -

  • まず、同じ文字を含むすべての部分文字列を取得し、その部分文字列を 1 つの文字とその後に続く部分文字列の長さに置き換える必要があります。

  • ここで、長さを 16 進値に変更します。16 進値のすべての文字を小文字に変更する必要があります。

  • 最後に、文字列全体を反転します。

###例### リーリー リーリー

イラスト

まず、同じ数の文字を含むすべての部分文字列を取得し、それらを文字の頻度に置き換えます。これにより、文字列「a2b3c4」が得られます。ここで長さを 16 進数値に変更しますが、2、3、4 は 16 進形式では同じ値になります。最後に文字列を逆にすると、最終結果は 4c3b2a になります。

リーリー リーリー

イラスト

まず、文字列を周波数文字列「o12」に変換します。ここで、16 進値 12 は C です。これを小文字、つまり c に変更して文字列に置き換え、文字列を反転します。

###方法###

上記の例から、問題についてのアイデアが得られました。次に、実装部分に入りましょう -

実装では、まず入力を整数として受け取り、戻り値として文字列を返す関数を実装します。

  • この関数は、指定された整数を 16 進数値に変換するために使用されます。ただし、変更が 1 つあり、英語の大文字の代わりに小文字が使用されます。

  • 別の関数を定義します。この関数では、for ループを使用して文字列を反復処理し、同じ文字の部分文字列に対して、現在の文字列と等しい文字が見つかるまで while ループを使用します。キャラクター 。

  • 頻度を計算して 16 進数値に変更し、現在のインデックス文字を含む文字列に追加します。

  • 最後に、文字列を反転して、印刷のために main 関数に返します。

  • ###例### リーリー ###出力### リーリー

    時間と空間の複雑さ

上記のコードの時間計算量は O(N) です。ここで、N は指定された文字列のサイズです。文字列を反復するには N 時間かかりましたが、文字列を反転するのにかかる時間は N 時間未満でした。

最終文字列を格納するための上記のコードのスペース複雑さは O(N) です。これを無視すると、余分なスペースは使用されません。

######知らせ######

暗号化は無限の方法で実行できますが、関係するのはキーを暗号化するルールの定義のみです。暗号化の主な特徴は、同じ入力に対して毎回同じ結果が得られなければならないことです。 ###結論は### このチュートリアルでは、ルールに従って指定された文字列を暗号化するコードを実装しました。まず、同じ型の要素を含む部分文字列を取得し、それらを文字とその頻度に置き換える必要があります。次に、周波数を 16 進数に変更し、最後に文字列全体を反転します。上記のコードの時間計算量は O(N) です。

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

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