文字列が与えられます。その文字列から重複する文字を削除する関数を開発します。文字列の長さは任意です。あなたのアルゴリズムは空間になければなりません。あなたが望むなら、文字サイズに依存しない一定の余分なスペースを使うことができます。あなたのアルゴリズムは複雑でO(n)でなければなりません。再帰を使用せずに文字列内の繰り返し文字を削除する
私の考えは、0番目のインデックスが文字aに対応し、25番目のインデックスが文字zに対応し、すべての要素を0に初期化する26のサイズの整数配列を定義することでした。 したがって、そして、我々が手紙に出会ったとき、そして望むインデックスの値を増やすだろう。
文字列をもう一度移動し、目的のインデックスの値が1ならば、それ以外の場合は文字を出力します。
このように、時間の複雑さはO(n)であり、使用されるスペースは文字列の長さに関係なく一定です!!
誰かがより効率的なアイデアを考え出すことができれば、とても役に立ちます!
が、これは宿題ですね?または疑似コードは問題ありませんか?たとえば、PHPの場合は配列に追加することができ、サイズは可変で、移動した文字数を最大で使用し、charがチェックされているかどうかをチェックするのはin_arrayの問題です(たとえば) – Purefan
文字列に 'a'〜' z'だけが含まれていると仮定しているとは思わないでください。 Unicodeには100万を超えるコードポイントがあります。 –
@purefanこれはあなたがすでに見ることができるので、宿題の質問ではありません。私は面接としてそれをタグ付けしました.. – Poulami